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中的映射关系,把所有像素点的灰度值变成新的灰度值,完毕。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)