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

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

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

对RGB通道

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

OutImg(:,:,1)=R;
OutImg(:,:,2)=G;
OutImg(:,:,3)=B;

完整的代码如下:

%%
clc
clear all
I=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:图片拍摄于湖南师范大学体育馆二楼,2019.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

综上代码如下:

%%
clc
clear all
I=imread('D:\QQ接收文件夹\MobileFile\IMG_20191001_204030.jpg');
%%
%%HSV
OutImg=rgb2hsv(I);
V=OutImg(:,:,3);
V = floor(V * 255);
%%
%%变化后V
V=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通道两种)相关推荐

  1. MATLAB图像处理1——曝光、直方图均衡化、平滑滤波

    小白一枚,有错误之处还请指出,谢谢~ 1.曝光: 1)双重曝光 clc;clear; picname='xinyi.tif'; picname1='xiaolan.tif'; x=double(imr ...

  2. 使用 matlab 数字图像处理(二)—— 直方图均衡化(极简实现)

    直方图均衡化(Histogram Equalization)是一种实用性极高的直方图修正技术. 直方图均衡化又称为灰度均衡化,是指通过某种灰度映射使输入图像转换为在每一灰度级上都有近似相同的像素点数的 ...

  3. 循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE)

    循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE) 文字摘自:对比度受限的自适应直方图均衡化(CLAHE) 直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图 ...

  4. MATLAB-真彩色图像直方图均衡化及分别在RGB与HSI坐标系进行处理

    目录 灰度直方图 什么是灰度直方图? 灰度直方图的性质 直方图均衡化处理灰度图像 均衡化步骤 代码 代码分析 直方图均衡化处理真彩色图像 代码 代码分析 灰度直方图 什么是灰度直方图? (已知晓的请直 ...

  5. 【图像处理】——图像增强Python实现直方图均衡化

    目录 一.相关概念 1.灰度直方图概念(hist) 2.灰度概率累积函数(cdf) 3.灰度直方图均衡化(equalizehist) 4.均衡化适用范围 二.均衡化的目的以及求解步骤 1.目的 2.求 ...

  6. 基于MATLAB对低照度图像进行直方图均衡化和同态滤波操作

    资源下载地址:https://download.csdn.net/download/sheziqiong/85897108 资源下载地址:https://download.csdn.net/downl ...

  7. Matlab幂律变换及直方图均衡化

    一.目标: 1.实现幂律变换,可以尝试调整gamma数值,观察图像变换.分析Lena图像(灰度)在不同gamma数值下,图像灰度变换的特点. 2.观察Lena图像的直方图.实现Lena图像的直方图均衡 ...

  8. 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)

    一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...

  9. OpenCV之imgproc 模块. 图像处理(4)直方图均衡化 直方图计算 直方图对比 反向投影 模板匹配

    直方图均衡化 目标 在这个教程中你将学到: 什么是图像的直方图和为什么图像的直方图很有用 用OpenCV函数 equalizeHist 对图像进行直方图均衡化 原理 图像的直方图是什么? 直方图是图像 ...

最新文章

  1. C#Dictionary通过索引查找key和value,非循环方法查询
  2. python读取数据文件-python多种读写excel等数据文件的方式(收藏篇)
  3. Windows内核实验001 中断提权
  4. VC++获取屏幕大小第二篇 物理大小GetDeviceCaps 上
  5. python 时间序列预测 币价_python时间序列预测股票走势
  6. 带有PostgreSQL的Docker Compose for Spring Boot应用程序
  7. 项目经理需要的思维批判
  8. dedecms 添加,编辑文章时 文章标题有字数限制的解决办法。
  9. 邀请函丨云和恩墨邀您一起迈向混合数据库时代!
  10. 使用青云主机的GPU主机教程(不完整版)
  11. 真假黄仁勋疑云?英伟达推出全球首个元宇宙平台
  12. IS-IS详解(三)——IS-IS 报文结构与功能
  13. 我眼中的2011年互联网大事记
  14. bochs运行xp_bochs xp镜像下载
  15. qq2018旧版本7.3.1下载_qq下载2020最新版下载安装-qq2020最新版下载V8.4.8-西西软件下载...
  16. 模拟无线透传的STM32的24L01无线模块与串口USART通信
  17. 吐血分享:QQ群霸屏技术教程2017(活跃篇)
  18. 易语言-王者天下页游自动回收辅助
  19. echarts 饼图 labelLine
  20. ubuntu 下载jdk1.8

热门文章

  1. 2019年618提前引发“骚动”:苏宁要成为主场?!
  2. CSS 第007篇 字体font
  3. Daz导出模型的部件中英文对照
  4. CVE-2020-1472NetLogon权限提升漏洞
  5. 怎么压缩gif图片大小?如何压缩gif又不影响画质
  6. 《数据库系统概念》一二章学习笔记
  7. 根据 Excel 中的数据批量修改文件的扩展名
  8. Android蓝牙系统
  9. PMP章节练习(第六章:项目进度管理)
  10. 使用VirtualBox创建虚拟机