读取两幅图像(gugong1.jpg和couple.bmp),分别对其使用直方图均衡化和同态滤波实现对两幅图像的增强,并同时分别绘制处理前后的直方图(1幅原图的、1幅直方图均衡化增强后的、1幅同态滤波用matlab
时间: 2024-12-18 13:31:35 浏览: 6
Python库 | gugong-0.5.5-py3-none-any.whl
在MATLAB中,你可以按照以下步骤来实现这个过程:
1. **加载图像**:
首先,你需要导入`gugong1.jpg`和`couple.bmp`这两幅图片,可以使用`imread`函数:
```matlab
img1 = imread('gugong1.jpg');
img2 = imread('couple.bmp');
```
2. **直方图均衡化**:
使用`histeq`函数对图像进行直方图均衡化,这会改变像素值分布,增加图像对比度:
```matlab
img1_eq = histeq(img1);
img2_eq = histeq(img2);
```
然后分别画出原图和直方图均衡化后的图像直方图:
```matlab
figure; [histogram, binEdges] = imhist(img1); % 原图1直方图
bar(binEdges, histogram, 'FaceColor', 'k'); hold on;
plot(binEdges, histogram, 'r', '-o'); % 绘制等高线
xlabel('Pixel intensity'); ylabel('Frequency');
figure; [histogram, ~] = imhist(img1_eq); % 均衡化后的图像1直方图
bar(binEdges, histogram, 'FaceColor', 'k'); hold on;
plot(binEdges, histogram, 'r', '-o'); % 绘制等高线
```
3. **同态滤波**:
使用`imfilter`函数结合`fspecial`(例如`imfilter(img1, fspecial('gaussian', ...))`)进行同态滤波。这里以高斯滤波为例,可以根据需要调整滤波器参数。同态滤波会对图像进行平滑处理,强调边缘并保持形状不变。
4. **绘制同态滤波后的直方图**:
对于同态滤波后的图像,同样计算并绘制其直方图:
```matlab
img1_hom = imfilter(img1, fspecial('gaussian', ...)); % 同理处理img2
figure; [histogram, ~] = imhist(img1_hom); % 图像1同态滤波后的直方图
bar(binEdges, histogram, 'FaceColor', 'k'); hold on;
plot(binEdges, histogram, 'r', '-o'); % 绘制等高线
```
5. **显示结果**:
最后,可以用`imshowpair`函数比较原始和处理后的图像:
```matlab
subplot(2, 2, 1); imshow(img1); title('Original Image 1');
subplot(2, 2, 2); imshow(img1_eq); title('Histogram Equalized Image 1');
subplot(2, 2, 3); imshow(img1_hom); title('Homomorphic Filtered Image 1');
subplot(2, 2, 4); imshow(img2); title('Original Image 2');
```
阅读全文