失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MATLAB图像处理-图像增强之彩色图像直方图均衡化(RGB通道和HSV通道两种)

MATLAB图像处理-图像增强之彩色图像直方图均衡化(RGB通道和HSV通道两种)

时间:2020-01-30 21:37:15

相关推荐

MATLAB图像处理-图像增强之彩色图像直方图均衡化(RGB通道和HSV通道两种)

直方图均衡化这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。

代码中的直方图均衡化函数为自己编写,可参看:自己编写直方图均衡化函数

对RGB通道

通过这种方式取出RGB三通道,分别进行直方图均衡化,最后进行合成,再输出。

OutImg(:,:,1)=R;

OutImg(:,:,2)=G;

OutImg(:,:,3)=B;

完整的代码如下:

%%clcclear allI=imread('D:\提高文化修养的文件\数图处理\第三章图像增强 第1次作业\fireworks.jpg');%%%%变化前灰度值OutImg=I;R=I(:,:,1);subplot(2,3,1)imhist(R);title('R')G=I(:,:,2);subplot(2,3,2)imhist(G);title('G')B=I(:,:,3);subplot(2,3,3)imhist(B);title('B')%%%%变化后灰度值R=hist_1(R);subplot(2,3,4)imhist(R);title('after R')G=hist_1(G);subplot(2,3,5)imhist(G);title('after G')B=hist_1(B);subplot(2,3,6)imhist(B);title('after B')%%%变化后图像OutImg(:,:,1)=R;OutImg(:,:,2)=G;OutImg(:,:,3)=B;figure,imshow(I);title('原图像')figure,imshow(OutImg);title('直方图均衡化后的图像')%%%直方图均衡化函数function hist_img = hist_1(I)[M, N] = size(I);size_img = M*N;c = zeros(1,256);%统计每个每个像素值的个数b= c;%转化前后的对照表temp = I(:);temp = sort(temp);for i = 1:size_imgc(temp(i)+1) = c(temp(i)+1)+1;enda = c;%求和for i = 2:256a(i) = c(i) + a(i-1);endmin_cdf = 10000;for i = 1:256if a(i)>0if a(i) < min_cdfmin_cdf = a(i);endendendfor j = 1:256if a(j) > 0b(j) = round(255*(a(j)-min_cdf)/(size_img-min_cdf));endendfor i = 1:Mfor j = 1:NI(i,j) = b(I(i,j)+1);end end hist_img = I;end

但是这种方式会对原来的颜色造成破坏,还会出现过曝等,适用性一般。

示例烟花图如下:

ps:图片拍摄于湖南师范大学体育馆二楼,.10.1

可以看出天空等出现了过曝,而且相应的颜色都有部分失真,特别是烟花附近过曝严重。

对HSV通道

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。

这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。

对于夜晚图像的增强,可以只对亮度通道进行增强。

通过rgb2hsv转换为hsv通道

通过hsv2rgb转换为rgb通道

V通道通常小于1,但是直方图均衡化为0-255,故:

floor(v * 255)

变换后:

v/255

综上代码如下:

%%clcclear allI=imread('D:\QQ接收文件夹\MobileFile\IMG_1001_204030.jpg');%%%%HSVOutImg=rgb2hsv(I);V=OutImg(:,:,3);V = floor(V * 255);%%%%变化后VV=hist_1(V);V = V / 255;%%%变化后图像OutImg(:,:,3) = V;OutImg = hsv2rgb(OutImg);imshow(I);title('原图像')figure,imshow(OutImg);title('直方图均衡化后的图像')%%%直方图均衡化函数function hist_img = hist_1(I)[M, N] = size(I);size_img = M*N;c = zeros(1,256);%统计每个每个像素值的个数b= c;%转化前后的对照表temp = I(:);temp = sort(temp);for i = 1:size_imgc(temp(i)+1) = c(temp(i)+1)+1;enda = c;%求和for i = 2:256a(i) = c(i) + a(i-1);endmin_cdf = 10000;for i = 1:256if a(i)>0if a(i) < min_cdfmin_cdf = a(i);endendendfor j = 1:256if a(j) > 0b(j) = round(255*(a(j)-min_cdf)/(size_img-min_cdf));endendfor i = 1:Mfor j = 1:NI(i,j) = b(I(i,j)+1);end end hist_img = I;end

对刚才的图像进行处理,结果如下:

可以看出对色彩的还原比较高,但是在灯的附近还是出现了过曝,整体来说画面的亮度有了较大的提升,且下方的座椅效果很好,比RGB通道的直方图均衡化要好。适用于没有特别亮的暗色照片增强。

综合对比:

左边为RGB,右边为HSV

推荐使用HSV通道。

参考链接,可参看:自己编写直方图均衡化函数

如果觉得《MATLAB图像处理-图像增强之彩色图像直方图均衡化(RGB通道和HSV通道两种)》对你有帮助,请点赞、收藏,并留下你的观点哦!

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