【问题标题】:How to speed up the sliding window function in matlab for an image如何在matlab中加快图像的滑动窗口功能
【发布时间】:2016-05-06 10:49:24
【问题描述】:

我有一个图像,我必须在其上滑动 81*81 窗口,以便找到中心像素与周围 81*81 窗口中存在的每个像素之间的强度距离(差异),我还必须找出位置距离,即中心像素坐标与周围窗口中存在的像素坐标之间的差异。如果我使用 for 循环,那么我将不得不为此操作使用 4 个嵌套的 for 循环,这几乎需要一整天的时间来处理单个图像。我想为图像中存在的每个像素存储 81*81 强度差异,同样存储位置距离,这往往会创建一个 4D 变量。谁能建议我一些有效的方法来做到这一点。以下是我编写此代码的方式:

I = imread('House.tiff');
YCbCr = rgb2ycbcr(I);
YCbCr = double(YCbCr);
YCbCr = imresize(YCbCr,[200 200]);
[m n v] = size(YCbCr);
Y = YCbCr(:,:,1); Cb = YCbCr(:,:,2);  Cr =YCbCr(:,:,3);
Y1 = padarray(Y,[20,20]);
Cb1 = padarray(Cb,[20,20]); 
Cr1 = padarray(Cr,[20,20]); 
window_size = 41;
p = (window_size-1)/2;
Dl = zeros(m,n,41,41);  Df = zeros(m,n,41,41);
for x = 1:1:m
    for y = 1:1:n
        for a = -p:1:p
            for b = -p:1:p
 Df(x,y,a+p+1,b+p+1)= abs(Y(x,y)-Y1(x+a+p,y+b+p))+ abs(Cb(x,y)- Cb1(x+a+p,y+b+p))+ abs(Cr(x,y)- Cr1(x+a+p,y+b+p));%% intensity distance
Dl(x,y,a+p+1,b+p+1) = max(abs((x+p)-(x+a+p)),abs((y+p)-(y+b+p)));%% location distance
            end
        end
    end
end

【问题讨论】:

    标签: matlab image-processing computer-vision


    【解决方案1】:

    对于那个 81 x 81 的滑动窗口,您可能有一个 X 和 Y“初始”点。 假设,创建一个新的临时窗口,在 80x80 窗口中裁剪这些质心之间的初始图像。

    new_image = image(X-40:X+40,Y-40:Y+40);
    

    这将快速为您创建新的临时图像。

    存储一路像素的值

    for i=1:length(images)
    currentImage=image(i,1);
    new_image(i)=currentImage(X-40:X+40,Y-40:Y+40);
    end
    

    【讨论】:

    • 感谢您的建议...您的提示非常有帮助...您能建议我一些方法来存储每个像素的所有 81*81 值吗...因为每次窗口滑动它都是去不同的价值观...再次感谢...
    • @GauriDeshpande 如果我的回答对您有所帮助,请不要忘记将其标记为正确 :) 谢谢,祝您好运
    【解决方案2】:

    a) 您的位置差异矩阵始终相同 - 它不依赖于 Y。只需创建一个 81x81 实例即可。

    b) 为什么需要存储所有这些输出?花费大量时间很容易是因为如此大的矩阵的 RAM 使用意味着您正在读取和写入磁盘(页面文件)而不是 RAM,这会大大减慢速度。最好在该算法的“下一阶段”进行优化,减少对您实际使用该矩阵所做的计算。根据您的下一阶段,使用imfilter 可能是要走的路。

    【讨论】:

    • 感谢您的建议..实际上我必须使用所有值来计算每个像素的发生概率以及周围窗口中存在的像素..也就是说,对于给定的像素周围窗口中存在周围像素的概率是多少,这就是我必须保留所有值的原因。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 2015-05-30
    • 2014-09-08
    • 1970-01-01
    • 2015-06-03
    • 2017-04-20
    • 2016-06-22
    • 1970-01-01
    相关资源
    最近更新 更多