彩色图像的直方图均衡化
彩色图像的直方图均衡化
1、彩色图像的直方图均衡化
这里我采用的方法是直接将彩色图像的 R 、 G 、 B 分量做直方图均衡化然后再将三个分量合并起来。
2、实现代码
(1)灰度图的直方图均衡化,曾经写过灰度图的直方图均衡化 。
%% 直方图均衡化
% 作者:杨宇东
% 日期:2014.10.23
% 参数:待均衡化的图片的数组
% 输出:均衡化处理之后的图片数组
%%
function f = MyHistogramEqulization(img)
[nHeight, nWidth, nDim] = size(img);
if nDim == 3img = rgb2gray(img);
end
height = size(img, 1);
width = size(img, 2);
% 图像中所有的像素的个数
numPixel = height * width;
% 各个灰度出现的频数
frequency = zeros(256, 1);
% 各个灰度出现的概率
probability = zeros(256, 1);
% 统计各个灰度的频数,计算各个灰度的概率
for i = 1:heightfor j = 1:widthvalue = img(i,j);frequency(value + 1) = frequency(value + 1) + 1;probability(value + 1) = frequency(value + 1) / numPixel;end
end
% 各个灰度的累积分布
fPixel = zeros(256, 1);
% 各个灰度的累积分布概率
pPixel = zeros(256, 1);
% 重新定义的灰度值
imgNew = zeros(256, 1);
% 累积和变量
sum = 0;
for i = 1:size(probability)sum = sum + frequency(i);fPixel(i) = sum;pPixel(i) = fPixel(i) / numPixel;% 计算映射的灰度值imgNew(i) = round(pPixel(i) * 255);
end
% 生成新的图像数组。 uint8 是指生成 8 位图像数组,节约存储空间。
f = uint8(zeros(height, width));
for i = 1:heightfor j = 1:widthf(i, j) = imgNew(img(i, j) + 1);end
end
(2)分别对三个分量进行直方图均衡化并合并起来。可以看到虽然的确有将原图中的阴暗部分变得明亮起来,但是颜色的失真也是比较严重的。而且在课堂上我所操作的图像均衡化之后有很多噪音。开始我以为是我的摄像头曾近掉进过马桶的问题,但是认真想想,应该是每个颜色分量对颜色的均衡化之后可能再重新合成的时候颜色有偏差造成的。所以总体效果一般。
%% 彩色图像的直方图均衡化
% 作者:杨宇东
% 日期:2014.10.23
% 参数:待均衡化的图片的文件
% 输出:均衡化处理之后的图片数组
%%
function f = ColorHistogramEqulization(imgFile)
img = imread(imgFile);
[nHeight, nWidth, nDim] = size(img);
r = img(:, :, 1);
g = img(:, :, 2);
b = img(:, :, 3);
% 调用自己写的直方图均衡化函数分别对 R G B 分量进行直方图均衡化
R = HistogramEqulization(r);
G = HistogramEqulization(g);
B = HistogramEqulization(b);
newimg = cat(3, R, G, B);
imshow(newimg);figure(1);
subplot(1, 2, 1), imshow(img);
title('均衡化之前的图像');
subplot(1, 2, 2), imshow(newimg);
title('均衡化之后的图像');figure(2);
subplot(4, 3, 1), imshow(r);
title('R 分量');
subplot(4, 3, 2), imshow(g);
title('G 分量');
subplot(4, 3, 3), imshow(b);
title('B 分量');
subplot(4, 3, 4), imhist(r);
subplot(4, 3, 5), imhist(g);
subplot(4, 3, 6), imhist(b);
subplot(4, 3, 7), imshow(R);
subplot(4, 3, 8), imshow(G);
subplot(4, 3, 9), imshow(B);
subplot(4, 3, 10), imhist(R);
subplot(4, 3, 11), imhist(G);
subplot(4, 3, 12), imhist(B);
彩色图像的直方图均衡化相关推荐
- matlab实现彩色图像的直方图均衡化
本篇用于记录用matlab实现彩色图像的直方图均衡化算法,并与matlab自带的直方图均衡化函数histeq做对比. 直方图原理可以参考下面的博客文章:直方图均衡化 原理.流程.公式推导及matlab ...
- MATLAB-真彩色图像直方图均衡化及分别在RGB与HSI坐标系进行处理
目录 灰度直方图 什么是灰度直方图? 灰度直方图的性质 直方图均衡化处理灰度图像 均衡化步骤 代码 代码分析 直方图均衡化处理真彩色图像 代码 代码分析 灰度直方图 什么是灰度直方图? (已知晓的请直 ...
- python图像直方图与直方图均衡化
图像直方图以及灰度与彩色图像的直方图均衡化 图像直方图: 图像的直方图用来表征该图像像素值的分布情况.用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目 ...
- c语言增强图像直方图均衡化,图像直方图均衡化增强opencv与C语言版
本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include //#include //#include //#include #include ...
- OpenCV:利用python来实现图像的直方图均衡化
文章目录 1.直方图 2.直方图均衡化 3.源代码实现直方图均衡化 1.直方图 直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值. 我们使用cv2. ...
- OpenCV总结:图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
前言 图像增强: 图象增强是数字图象处理常用的技术之一.图象增强技术的目的是为了改进图象的质量,以达到赏心悦目的效果.通常要完成的工作是除去图象中的噪声,使边缘清晰以及突出图象中的某些性质等.模型处理 ...
- opencv 实现等值线_OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)...
1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的.对比度较低的图像适合使用直方图均衡化方 ...
- 【OpenCV入门指南】第九篇 灰度直方图均衡化
<OpenCV入门指南>系列文章地址: http://blog.csdn.net/morewindows/article/category/1291764 转载请标明出处,原文地址:htt ...
- python opencv 直方图均衡_深入理解OpenCV+Python直方图均衡化
原标题:深入理解OpenCV+Python直方图均衡化 正文 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法. 基本思想:把原始图的直方图变换为均匀分 布的形式,这样就增加了像素灰度 ...
最新文章
- ibatis基础(三):查询指定id的单个对象
- Oracle spatial 周边查询SQL
- 指令重排与jvm底层实现
- 关于CDN的部署思路和技术架构
- 飞行器真的是计算机!
- 三子棋の局势判断(洛谷P1917题题解,Java语言描述)
- 在svn中发布多个工程
- Oracle数据库下载与安装(Windows)
- c语言数字类型转字符类型,C语言字符类型和数字类型互相转换
- 欧创芯原装OC 6700B升压型恒流驱动芯片,智能过温保护,内置 VDD 稳压管
- Win10系统给共享文件夹设置密码的操作步骤
- linux中文件权限为d-rwxr-xr,Linux基础知识之文件权限详解
- 反射Modifier
- HDOJ 1164 Eddy's research I(拆分成素数因子)
- 聊一聊微博新知博主这件事,看看赚钱方式有哪些?
- 华为鸿蒙os和小米ov,稳了,华为鸿蒙手机 OS 发布!小米也能用?
- 模电(二)半导体二极管
- 开发一个项目需要的基本知识
- 浏览器缓存(一):强缓存 MEMORY CACHE 和 DISK CACHE
- 代码编码格式,文件格式批量转换工具