失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab数字图像处理编码实现直方图均衡化

matlab数字图像处理编码实现直方图均衡化

时间:2020-05-03 16:33:46

相关推荐

matlab数字图像处理编码实现直方图均衡化

matlab中直方图均衡化有对应的内置函数histeq函数,其具体形式为:

g=histeq(f,nlev)

参数f为输入图像,nlev是为输出图像设置的灰度级(默认为64),g为直方图均衡化后的输出图像。

下面是自写matlab代码实现histeq相同功能的函数及测试:

函数定义代码:

function img_out=hist_equal(img,nlev)%直方图均衡化函数,其中参数img是输入图像,nlev是设定输出图像灰度值数量img_out=img;img=uint16(img);%unit8类型转为uint16类型,避免uint8的最大数255加1时出现溢出错误h=imhist(img)/numel(img);%直方图数据归一化s=0:length(h)-1;%创建输出灰度值向量rk=0.0;%输入图像灰度概率求和的变量for i=1:length(h)rk=rk+h(i);s(i)=round(rk*(nlev-1));end[m,n,p]=size(img);for i=1:mfor j=1:nfor k=1:pimg_out(i,j,k)=s(img(i,j,k)+1);endendendend

相关测试代码:

img=imread('e.jpg');img=rgb2gray(img);%将rgb图像转化为灰度图像figuresubplot(321)imshow(img)%原始图像title('原始图像')subplot(322)imhist(img)%原始图像直方图title('原始图像直方图')img_out1=hist_equal(img,256);%直方图均衡化,调用自写函数subplot(323)imshow(img_out1)%直方图均衡化图像title('直方图均衡化图像(自写函数)')subplot(324)imhist(img_out1)%直方图均衡化后的图像的直方图title('直方图均衡化后的图像的直方图(自写函数)')img_out2=histeq(img,256);%直方图均衡化,调用matlab内置函数histeq函数subplot(325)imshow(img_out2)%直方图均衡化图像title('直方图均衡化图像(histeq函数)')subplot(326)imhist(img_out2)%直方图均衡化后的图像的直方图title('直方图均衡化后的图像的直方图(histeq函数)')

运行结果:

可以看到,自写的直方图均衡化函数与matlab内置的histeq函数的测试结果一模一样。

感谢阅读!

如果觉得《matlab数字图像处理编码实现直方图均衡化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。