失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab实现彩色图像的直方图均衡化

matlab实现彩色图像的直方图均衡化

时间:2021-11-15 16:53:48

相关推荐

matlab实现彩色图像的直方图均衡化

本篇用于记录用matlab实现彩色图像的直方图均衡化算法,并与matlab自带的直方图均衡化函数histeq做对比。

直方图原理可以参考下面的博客文章:直方图均衡化 原理、流程、公式推导及matlab实现_非 常 道的博客-CSDN博客_matlab 直方图均衡化原理

通过分别对R、G、B颜色通道分别进行直方图均衡,来实现彩色图像的直方图均衡化。具体均衡化算法可以分为两部分,

1)直方图统计;

2)直方图归一化;

算法代码如下:

%证实针对彩色图像只校正Y通道的直方图,均衡后图像不理想。需要分别对RGB颜色通道进行直方图均衡。function outImg = myHist(I) [H,W,C]=size(I);%yuv_img = rgb2ycbcr(I);%转换成yuv格式hist_cnt = zeros([256,C]);%直方图统计for i=1:Hfor j= 1:Wfor k=1:Chist_cnt(I(i,j,k)+1,k) = hist_cnt(I(i,j,k)+1,k)+1;end end end%直方图均衡hist_eq = zeros([256,C]);for i=1:256for k=1:C %三个颜色通道分别计算for j=1:i %统计累加和 hist_eq(i,k) = hist_eq(i,k)+hist_cnt(j,k);endhist_eq(i,k) = hist_eq(i,k)*255/(H*W);endendhist_img = zeros(size(I),'uint8');for i=1:Hfor j= 1:Wfor k=1:Chist_img(i,j,k) = round(hist_eq(I(i,j,k)+1,k));end end end%hist_img = ycbcr2rgb(hist_img);figure;subplot(1,2,1);imshow(I);title('原图');subplot(1,2,2);imshow(hist_img);title('均衡图');outImg = hist_img;end

测试代码如下:

clearclcI = imread('Lena.jpg');myHist(I);

效果图如下:

对比matlab自带的histeq均衡图如下

发现自己实现的均衡化与matlab自带的函数还是有差别。

了解不同可以查看博客文章:histeq的原理和用法_在云端821的博客-CSDN博客_histeq

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

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