编写程序使用matlab:使用线性函数对“lena_gray.tif”图片进行点运算灰度压缩并显示,然后对处理后的图像进行直方图均衡化并进行显示。
时间: 2024-05-09 09:14:43 浏览: 148
以下是使用MATLAB编写的程序,实现了对“lena_gray.tif”图片进行点运算灰度压缩和直方图均衡化的功能。
```matlab
% 读取图像
img = imread('lena_gray.tif');
% 显示原始图像
subplot(2,2,1);imshow(img);title('Original Image');
% 灰度压缩
a = 1.5; % 压缩因子
img_comp = imadjust(img,[],[],a);
% 显示压缩后的图像
subplot(2,2,2);imshow(img_comp);title('Compressed Image');
% 直方图均衡化
img_eq = histeq(img_comp);
% 显示均衡化后的图像
subplot(2,2,3);imshow(img_eq);title('Equalized Image');
% 显示均衡化前后的直方图
subplot(2,2,4);imhist(img_comp);hold on;imhist(img_eq);legend('Before','After');
```
运行该程序后,会显示原始图像、灰度压缩后的图像、直方图均衡化后的图像以及压缩前后的直方图对比。可以根据需要自行调整压缩因子a的大小。
相关问题
编写程序:使用线性函数对“lena_gray.tif”图片进行点运算灰度压缩并显示,然后对处理后的图像进行直方图均衡化并进行显示。
以下是基于Python的代码实现:
```python
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('lena_gray.tif', 0)
# 线性函数灰度压缩
a = 2.0
b = -50.0
img_compress = np.clip(a * img + b, 0, 255).astype(np.uint8)
# 直方图均衡化
img_equalized = cv2.equalizeHist(img_compress)
# 显示处理后的图像
cv2.imshow('Compressed Image', img_compress)
cv2.imshow('Equalized Image', img_equalized)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码解释:
1. `cv2.imread('lena_gray.tif', 0)` 读取原始灰度图像。
2. `a` 和 `b` 是压缩函数中的参数,可以根据需要进行调整。
3. `np.clip(a * img + b, 0, 255)` 对灰度值进行线性变换,并将结果限制在 0-255 范围内。
4. `cv2.equalizeHist(img_compress)` 对灰度值进行直方图均衡化。
5. `cv2.imshow()` 显示处理后的图像。
6. `cv2.waitKey(0)` 等待按下任意键。
7. `cv2.destroyAllWindows()` 关闭所有的窗口。
用matlab读取lena_gray.tif 图像,然后使用prewitt 算子对图像进行锐化,同屏显示原图像和锐化后图像
好的,以下是实现的代码:
```matlab
% 读取图像
lena = imread('lena_gray.tif');
% 显示原图像
subplot(1,2,1);
imshow(lena);
title('Original Image');
% 使用Prewitt算子进行锐化
prewitt_filter = [-1,-1,-1;0,0,0;1,1,1];
lena_prewitt = imfilter(double(lena), prewitt_filter);
% 显示锐化后图像
subplot(1,2,2);
imshow(lena_prewitt, []);
title('Sharpened Image (Prewitt)');
```
运行以上代码,即可在同一画布上显示原图像和使用Prewitt算子锐化后的图像。
阅读全文