Matlab 直方图均衡化

1. 直方图均衡化介绍

直方图均衡化是图像增强的一种基本方法,可提高图像的对比度,即:将较窄的图像灰度范围以一定规则拉伸至较大(整个灰度级范围内)的范围。
目的是在得到在整个灰度级范围内具有均匀分布的图像。
实现步骤如下:

  1. 读入图像
  2. 对每个通道分别统计像素值[0,255]出现的次数。
  3. 对每个通道分别求像素值[0,255]出现的概率,得到概率直方图。
  4. 对每个通道分别求像素值[0,255]概率的前缀和,得到累计直方图。
  5. 对每个通道根据累计直方图分别求像素映射函数。
  6. 对每个通道完成每个像素点的映射。
  7. 输出直方图均衡化的图像。

2. 灰度图直方图均衡化

2.1 参考代码

RGB = imread('1.png'); % 读取彩色图
subplot(131);
imshow(RGB);
title('彩色图');I=rgb2gray(RGB); % 将彩色图转化为灰度图
subplot(132);
imshow(I);
title('灰度图');[R, C] = size(I);% 统计每个像素值出现次数
cnt = zeros(1, 256);
for i = 1 : Rfor j = 1 : Ccnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1;end
endf = zeros(1, 256);
f = double(f); cnt = double(cnt);% 统计每个像素值出现的概率, 得到概率直方图
for i = 1 : 256f(1, i) = cnt(1, i) / (R * C);
end% 求累计概率,得到累计直方图
for i = 2 : 256f(1, i) = f(1, i - 1) + f(1, i);
end% 用f数组实现像素值[0, 255]的映射。
for i = 1 : 256f(1, i) = f(1, i) * 255;
end% 完成每个像素点的映射
I = double(I);
for i = 1 : Rfor j = 1 : CI(i, j) = f(1, I(i, j) + 1);end
end% 输出
I = uint8(I);
subplot(133);
imshow(I);
title('直方图均衡化');

2.2 运行截图

3. 彩色图直方图均衡化

3.1 参考代码

RGB = imread('1.png'); % 读取彩色图
subplot(121);
imshow(RGB);
title('彩色图');[R, C, K] = size(RGB); % 新增的K表示颜色通道数% 统计每个像素值出现次数
cnt = zeros(K, 256);
for i = 1 : Rfor j = 1 : Cfor k = 1 : Kcnt(k, RGB(i, j, k) + 1) = cnt(k, RGB(i, j, k) + 1) + 1;endend
endf = zeros(3, 256);
f = double(f); cnt = double(cnt);% 统计每个像素值出现的概率, 得到概率直方图
for k = 1 : Kfor i = 1 : 256f(k, i) = cnt(k, i) / (R * C);end
end% 求累计概率,得到累计直方图
for k = 1 : Kfor i = 2 : 256f(k, i) = f(k, i - 1) + f(k, i);end
end% 用f数组实现像素值[0, 255]的映射。
for k = 1 : Kfor i = 1 : 256f(k, i) = f(k, i) * 255;end
end% 完成每个像素点的映射
I = double(I);
for i = 1 : Rfor j = 1 : Cfor k = 1 : KRGB(i, j, k) = f(k, RGB(i, j, k) + 1);endend
end% 输出
RGB = uint8(RGB);
subplot(122);
imshow(RGB);
title('彩色直方图均衡化');

3.2 运行截图

Matlab 直方图均衡化相关推荐

  1. histeq从用法到原理——Matlab直方图均衡化函数

    转载于http://blog.sina.com.cn/s/blog_14d1511ee0102wwyt.html (公式未正常显示,请看原文链接) 一.用法 histeq是Matlab中的一个工具箱函 ...

  2. matlab 直方图均衡化 histeq实现

    function img = histEq(img) % 输入图像灰度.rgb图像都可以 % 1 转灰度图像 2. 统计每一灰度级的数量 3. 累计灰度级 4. 归一化为累计概率 % 5. 当前灰度级 ...

  3. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化

    图像的直方图 图像直方图表示图像中每一种像素的个数,反映了图像中每种像素值出现的频率,是图像的基本统计特征之一,具有平移,旋转,缩放不变性,广泛应用于图像处理的各个领域.比如灰度图像的阈值分割,基于颜 ...

  4. 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验

    图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...

  5. Matlab实现直方图均衡化(基于自定义函数)

    Matlalb实现直方图均衡化 直方图均衡化 Matlab代码实现 直方图均衡化 直方图均衡化是一种使输出图像直方图近似服从均匀分布的变换算法,其计算步骤如下: 列出原始图像的灰度级fjf_jfj​, ...

  6. 基于直方图均衡化的水下激光图像处理(MATLAB仿真)

    原文:http://blog.csdn.net/sunlinyi66/article/details/39215447 基于直方图均衡化的水下图像增强(MATLAB仿真) 可以对RGB三个通道进行直方 ...

  7. 详解图像直方图均衡化原理,附MATLAB、C、C++源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 提问:图像直方图均衡化有啥效果? 答:看了下面的 ...

  8. python直方图均衡化代码_基于matlab的直方图均衡化代码

    基于matlab的直方图均衡化代码 2007-04-15 20:15 clear all %一,图像的预处理,读入彩***像将其灰度化 PS=imread('1.jpg');             ...

  9. 【图像处理】直方图均衡化(附带Matlab及OpenCV3自编程实现代码)

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 直方图均衡化是最基础的图像处理方法之一,也是本人接触图像处理时最先接触到的算法.算法很 ...

  10. MATLAB:虹膜识别的图像灰度化处理,直方图均衡化

    (1)图像灰度化处理: 读取一张图片之后,进行灰度化处理,然后对其进行直方图均值化. clear;close all %读取原图地址 RGB= imread('D:\img\1.jpg'); %图像灰 ...

最新文章

  1. 浅谈我所见的CSS命名风格
  2. 小组会谈(2019.3.14)
  3. 18计算机汽修英语期末试卷,英语语法期末考试试卷(a)
  4. CSS选择器必备的3个知识点
  5. 5.1傅里叶展开,傅里叶级数推导--非常棒
  6. Error of Git
  7. vb.net 教程 6-14 终止线程的例子
  8. 麻省理工18年春软件构造课程阅读10“抽象数据类型”
  9. lede虚拟服务器,在虚拟机中安装 LEDE 软路由
  10. 音乐外链转换工具 php,音乐外链生成工具V2.1 支持14个音乐网站外链提取转换
  11. 陈一为担任BCF理事
  12. initializing of server in progress as process 4656
  13. hihoCoder #1498 : Diligent Robots【数学】
  14. Event Trace for Windows - 事件元数据总览 译(13)
  15. linux intel wifi驱动,ubuntu 8.04下面 Intel WIFI link 5100无线网卡驱动安装
  16. 实时语义分割网络 BiSeNet(附代码解读)
  17. 如何在Xcode里面运行C语言程序---简单展示
  18. 最新最火的十大网络流行语排行榜火热出炉,幽默搞笑网络段子来袭!
  19. windows tabular数据流协议
  20. ARM架构与体系学习(二)——3级流水线

热门文章

  1. 买房的疯了-开发商笑不起来了(本文仅供新浪)
  2. 沃趣陈栋ORACLE认证,QData-Oracle-数据库一体机---沃趣科技.pdf
  3. 软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-1
  4. 普及1080i和1080p的区别
  5. linux marvell 网卡驱动,如何在linux下安装MarvellYukon网卡驱动?
  6. 交换element-ui的MessageBox弹框的确定和取消位置
  7. echarts地图数据过旧,通过geojson自定义经纬度地图
  8. 【统计分析】(task4) 应用随机过程(更新ing)
  9. 2022-07-25 第五小组 顾祥全 学习笔记 day18-JavaSE-接口
  10. java set方法无法使用_Java setBounds无法与JPanel一起使用