matlab里面多子图的形式显示图I5、D5、I6、D6以及I5、I6的直方图,并加上标题,并分析滤波前后直方图发生了什么变化
时间: 2023-07-10 14:06:07 浏览: 105
在Matlab中,可以使用subplot函数创建多个子图,并使用histogram函数绘制直方图。
以下是可能的代码实现:
```matlab
% 加载图像
I5 = imread('I5.jpg');
D5 = imread('D5.jpg');
I6 = imread('I6.jpg');
D6 = imread('D6.jpg');
% 创建子图
figure;
subplot(2, 3, 1); imshow(I5); title('I5');
subplot(2, 3, 2); imshow(D5); title('D5');
subplot(2, 3, 3); imshow(I6); title('I6');
subplot(2, 3, 4); imshow(D6); title('D6');
subplot(2, 3, 5); histogram(I5); title('I5 histogram');
subplot(2, 3, 6); histogram(I6); title('I6 histogram');
% 应用滤波器
h = fspecial('average', 3);
I5_filtered = imfilter(I5, h);
D5_filtered = imfilter(D5, h);
I6_filtered = imfilter(I6, h);
D6_filtered = imfilter(D6, h);
% 创建子图
figure;
subplot(2, 3, 1); imshow(I5_filtered); title('I5 filtered');
subplot(2, 3, 2); imshow(D5_filtered); title('D5 filtered');
subplot(2, 3, 3); imshow(I6_filtered); title('I6 filtered');
subplot(2, 3, 5); histogram(I5_filtered); title('I5 filtered histogram');
subplot(2, 3, 6); histogram(I6_filtered); title('I6 filtered histogram');
```
通过这段代码,我们可以将五个图像显示在一个有6个子图的窗口中。前三个子图显示原始图像,后两个子图分别显示I5和I6的直方图。
我们还可以将这些图像应用滤波器,然后绘制滤波后的图像和直方图。这里我们使用了一个3x3的平均滤波器。
分析滤波前后直方图发生了什么变化:
I5的原始直方图显示了大量的像素值在60到100之间,而经过平均滤波后,这些像素值变得更加均匀分布,直方图的峰值降低了。
I6的原始直方图显示了两个峰值,一个在50左右,另一个在200左右。经过平均滤波后,这两个峰值都变得更加平滑,直方图呈现出更加均匀的分布。
阅读全文