【matlab数字图像处理实验】图像点运算
实验内容:
1.图像代数运算,包括加、减代数运算。
2. 对图像进行域值滤波、线性变换并理解和观察对应的直方图。
实验结果
- 01
图像代数运算 I=imread('lene.jpg'); J=rgb2gray(I); K=histeq(J,256); subplot(2,2,1),imshow(J); title('原始图像J') subplot(2,2,2),imshow(K); title('直方图均衡化图像K') G=double(J)-double(K); subplot(2,2,3),imshow(uint8(G));title('J-K') H=double(K)+double(J); subplot(2,2,4),imshow(uint8(H)); title('J-K')
- 02
域值滤波 I=imread('rice.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 [M,N]=size(I); K=zeros(256); for i=1:M for j=1:N if(I(i,j)<105) K(i,j)=0.2; else K(i,j)=230; end end end J=uint8(K); subplot(2,2,3),imshow(K); title('域值滤波图象'); subplot(2,2,4),imhist(J); title('域值滤波直方图');
- 03
线性变换 I=imread('rice.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 [M,N]=size(I); vMax = max(max(I)); vMin = min(min(I)); K=zeros(256); for i=1:256 for j=1:256 K(i,j)=double(I(i,j))*1.6-62; end end J=uint8(K); subplot(2,2,3),imshow(J); title('线性变换图象'); subplot(2,2,4),imhist(J); title('线性变换直方图');
小结
- 01
若要对两幅图像进行代数运算,要求两幅图像的尺寸相同。
- 02
加法:对同一场景的多幅图像求平均值或者将一幅图像的内容叠加到另一幅图像上去,实现二次曝光。减法:可以去除一幅图像中的所不需要的加性图像或者检测同一场景的两幅图像之 间的变化。
- 03
根据图像直方图的观察发现,在105左右的灰度级处直方图发生明显变化,图像类似马鞍,这时候可采用域值滤波的方法进行处理。如图,处理后米粒非常明显,清晰可见。这种方法在面 对类似的直方图的时候可以应用。
- 04
图像的线性化处理可以加大图像动态范围,扩展对比度,使图像清晰,特征明显,大大改善人眼的视觉效果。
- 05
在实验结果的直方图我们可以看出,线性化处理以后图像的范围明显增大,图像中米粒的形象更加逼真,满足了我们的视觉要求。另外,在线性化处理过程中,各个参数要根据新的直方图以及图像效果进行调整,直到满意再最后确定。没有一个公式的参数是固定不变的。