matlab代码:对cameraman.tif图像进行如下块操作:在5*5的块内,取最大值与最小值的差;显示原图像和进行块操作后的图像,并分析实验结果。采用直方图均衡、对比度扩展两种方法对cameraman.tif图像进行增强;显示原图像和增强后图像及其对应的直方图,并对实验结果进行比较与分析。
时间: 2024-02-25 09:55:44 浏览: 69
用MATLAB程序进行图像处理
以下是您需要的 MATLAB 代码:
块操作部分:
```matlab
% 读取图像
img = imread('cameraman.tif');
% 定义块大小
blockSize = 5;
% 获取图像尺寸
[height, width] = size(img);
% 初始化结果矩阵
result = zeros(height, width);
% 遍历图像
for i = 1:blockSize:height
for j = 1:blockSize:width
% 获取当前块
block = img(i:min(i+blockSize-1,height), j:min(j+blockSize-1,width));
% 计算最大值与最小值的差
diff = max(block(:)) - min(block(:));
% 将差值赋值给结果矩阵
result(i:min(i+blockSize-1,height), j:min(j+blockSize-1,width)) = diff;
end
end
% 显示原图像和进行块操作后的图像
subplot(1,2,1);
imshow(img);
title('原图像');
subplot(1,2,2);
imshow(result, []);
title('块操作后的图像');
```
直方图均衡部分:
```matlab
% 读取图像
img = imread('cameraman.tif');
% 进行直方图均衡
imgEq = histeq(img);
% 显示原图像和增强后图像及其对应的直方图
subplot(2,2,1);
imshow(img);
title('原图像');
subplot(2,2,2);
imhist(img);
title('原图像直方图');
subplot(2,2,3);
imshow(imgEq);
title('增强后的图像');
subplot(2,2,4);
imhist(imgEq);
title('增强后的图像直方图');
```
对比度扩展部分:
```matlab
% 读取图像
img = imread('cameraman.tif');
% 对比度扩展
imgContrast = imadjust(img, [0.2, 0.8], []);
% 显示原图像和增强后图像及其对应的直方图
subplot(2,2,1);
imshow(img);
title('原图像');
subplot(2,2,2);
imhist(img);
title('原图像直方图');
subplot(2,2,3);
imshow(imgContrast);
title('增强后的图像');
subplot(2,2,4);
imhist(imgContrast);
title('增强后的图像直方图');
```
分析:
通过块操作,我们可以看到图像被分成了许多小块并进行处理,得到了一张新的图像。这种操作可以用于图像的降采样等应用中。
在直方图均衡和对比度扩展两种增强方法中,我们可以看到增强后的图像的对比度都得到了提高,但是直方图均衡会使得图像变得更亮,而对比度扩展则可以保持原有的亮度。因此,在选择增强方法时需要根据具体应用场景进行选择。
阅读全文