图像阻塞和逐块减去两个图像

时间:2014-02-25 17:11:29

标签: image matlab image-processing

我有两张图片:一张是标准图片,另一张是参考图片。我需要找到标准图像的第一个块与第一个参考图像块之间的差异,依此类推。我用于阻止的代码是

S = imread ('standard image'); R = imread ('reference image');
% then converted images to grayscale images 

S = rgb2gray(S); R = rgb2gray (R);
% blocking of both images( as both images have 1600x2560 size) so i'm dividing 
it into 16 blocks of 4*4 matrix with block size of 400x640

div1= [400 400 400 400]; div2 = [640 640 640 640];
Bs = mat2cell (S, div1, div2); Br = mat2cell (R, div1,div2);

要查看版块,我可以imshow(Bs{1,1})使用Bs{4,4}imshow Br {1} Br {16}

我需要通过减去像第一块标准图像和第一块参考图像这样的块来找到差异。我需要找到一种方法来查找每个块的索引,并在两个图像上应用循环以进行减法。

2 个答案:

答案 0 :(得分:0)

你可以使用类似的东西

for i=1:length(div1), for j=1:length(div2), D{i,j}=abs(Bs{i,j}-Br{i,j}); end, end

其中D是两者之间的差异,或者你也可以在将它们分成块之前休息矩阵

D = abs(S-R);

div1= [400 400 400 400]; div2 = [640 640 640 640];
Bs = mat2cell (S, div1, div2); Br = mat2cell (R, div1,div2);

我使用了abs,因为我不知道你是否可以在图片中添加否定条目。

答案 1 :(得分:-1)

我会使用类似的东西:

I=double(S)-double(R)
surf(I)
view(2)
shading interp
axis tight

这让我可以将强度视为表面。