5.数字图像处理及mtlab 实现-学习及实验指导 imsubtract函数
I1=imread('cell.bmp');
I2=imcrop(I1,[1 1 307 377]);
J=imadd(I,I2);
subplot(1,4,1),subimage(I);
subplot(1,4,2),subimage(J);
J1=imsubtract(J,I2);
subplot(1,4,3),subimage(J1);
C=J1-I;
count=0;
for i=1:378;
for j=1:308;
if C(i,j)~=0;
count=count+1;
end
end
end
问题一:
RGB=imread('Liutong.jpg');
I=rgb2gray(RGB);I1=imread('cell.bmp');
I2=imcrop(I1,[1 1 307 377]);
J=imadd(I,I2);
subplot(1,4,1),subimage(I);
subplot(1,4,2),subimage(J);
J1=imsubtract(J,I2);
subplot(1,4,3),subimage(J1);
C=J1-I;
count=0;
for i=1:378;
for j=1:308;
if C(i,j)~=0;
count=count+1;
end
end
end
subplot(1,4,4),subimage(C);
文字描述:程序实现功能,J=I+I2,J1=J-I2,,J1和I表示的矩阵相等 但显示出的图像不同,为什么?程序运行结果如下:
问题解答:
uint最大值255 在I和I2相加的时候超过255的部分会变成255 所以J1=J-I2不等于I 所以显示的图片不同
比如:I中一像素值大小220,I2一像素值大小46,220+46=266 会变成255 255-46=209 不等于220
解决方法:I=double(rgb2gray(RGB));
I1=double(imread('cell.bmp')); 转换成double类型计算。
问题二:
C=J1-I 矩阵值为零 按上述所说,J1和I显示图像不同,矩阵值不同,那相减问什么为零?
问题解答:
暂未解决。