求一matlab程序,要求: 输入图像,输出直方图均衡化后的直方图

求一matlab程序,要求: 输入图像,输出直方图均衡化后的直方图,第1张

你先把要处理的图像载入到matlab的work文件夹里面

a=imread(‘1.bmp’) %输入真彩色图像

b=rgb2gray(a) %转化成灰度图像

图像显示

figure(1)

subplot(1,2,1)imshow(a)

subplot(1,2,2)imshow(b)

%显示灰度图像与直方图

figure(2)

subplot(1,2,1)imshow(b)

subplot(1,2,2)imhist(b)

%直方图均衡化

c=histeq(b)

figure(3)

subplot(1,2,1)imshow(c)

subplot(1,2,2)imhist(c)

希望能对你有帮助~

a=imread('f:\xx.jpg')%读入原图像文件

I=rgb2gray(a)%彩色图像转黑白,若原图像为黑白的,则不要这一步

J=histeq(I)%对原图像进行直方图均衡化处理

imshow(I)%显示原图像

title('原图像')%给原图像加标题名

figureimshow(J)%对原图像进行屏幕控制;显示直方图均衡化后的图像

title('直方图均衡化后的图像')%给直方图均衡化后的图像加标题名

figuresubplot(121)%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排

%两幅图的第1 幅图

imhist(I,64)%将原图像直方图显示为64 级灰度

title('原图像直方图')%给原图像直方图加标题名

subplot(122)%作第2 幅子图

imhist(J,64)%将均衡化后图像的直方图显示为64 级灰度

title('均衡变换后的直方图')%给均衡化后图像直方图加标题名

严格一点来说,直方图均衡化和直方图规定化是不同的概念。histeq是用来做直方图均衡的。

hgram是均衡化后的灰度级个数。

比如histeq(I, 16),就是希望均衡化后的直方图只有16个灰度级;

histeq(I, 64),就是希望均衡化后的直方图只有64个灰度级。

假设原始图像为256级,共有X个像素,现希望均衡化为N个灰度级,过程如下:

步骤1:计算原始图像I的累积函数A(g),其中g=[0,255]表示256个灰度级。

A(0)就是灰度级为0的元素个数;

A(1)就是灰度级为0和1的元素个数和;

A(2)就是灰度级为0、1和2的元素个数和;

...依次类推...;

A(255)就是X,即原始图像的总的像素个数。

步骤2:计算原始直方图和均衡化后直方图的映射关系g->G,即将原始图像中的灰度值g变成新的灰度值G。

这里,G=N*A(g)/X

步骤3:遍历原始图像I,依据步骤2中的映射关系,把所有像素点的灰度值变成新的灰度值,完毕。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7814548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存