私は、中心ピクセルと存在する各ピクセル間の強度距離(差)を見つけるために81 * 81ウィンドウをスライドさせる必要がある画像を持っています周囲の81 * 81のウィンドウでは、中心ピクセル座標と周囲のウィンドウに存在するピクセルの座標との間の差異である位置距離を知る必要があります。 forループを使用する場合は、この操作に4つのネストされたforループを使用する必要があります。この操作には、1つのイメージに対してほぼ1日かかることがあります。私は画像内に存在する各ピクセルについて81 * 81の強度差を保存し、同様に位置距離については4D変数を作成する傾向があります。誰も私にこれを行うための効率的な方法を提案することができます。ここで私はこのコードを書かれている方法です。画像のmatlabでスライディングウィンドウ機能を高速化する方法
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
あなたのご意見ありがとうございました...あなたのヒントは非常に有益です...私は、各ピクセルのすべての81 * 81値を保存する方法を提案できますか?ウィンドウがスライドするたびに異なる値になります。 ..再び元気です... –
ありがとうございました。大変ありがとうございます@ 16per9これは実際にうまくいっています..... –
@GauriDeshpandeもし私の答えがあなたを助けてくれたら幸いです。ありがとうと幸運 – 16per9