用matalb实现自编函数图像的均衡化
时间: 2023-10-11 14:11:58 浏览: 83
以下是一个简单的 MATLAB 函数来实现图像的直方图均衡化:
```matlab
function eq_img = histeq(img)
% Perform histogram equalization on input image
% Compute histogram
h = imhist(img);
% Compute cumulative distribution function
cdf = cumsum(h) / numel(img);
% Map pixel intensities to new values
eq_img = uint8(255 * cdf(img + 1));
% Display original and equalized images
figure;
subplot(1,2,1);
imshow(img);
title('Original Image');
subplot(1,2,2);
imshow(eq_img);
title('Equalized Image');
end
```
使用该函数可以将输入图像 img 进行直方图均衡化并得到均衡化后的图像 eq_img。
注意,这里使用了 MATLAB 内置函数 imhist() 来计算图像的直方图,cumsum() 计算累积分布函数,并使用 uint8() 将计算得到的新像素强度值转换为 8 位无符号整数。
要使用该函数,请将其保存为一个 .m 文件,然后在 MATLAB 命令窗口中调用该函数并传递要均衡化的图像作为参数。例如:
```matlab
img = imread('lena.jpg');
eq_img = histeq(img);
```
这将加载名为 lena.jpg 的图像并将其传递给 histeq() 函数进行直方图均衡化。均衡化后的图像将保存在 eq_img 变量中,并且在一个新的窗口中显示。
阅读全文