【图像处理】matlab 实现灰度图像的直方图均衡化算法
发布日期:2021-06-29 14:32:34
浏览次数:2
分类:技术文章
本文共 1292 字,大约阅读时间需要 4 分钟。
实验内容
实现灰度图像的直方图均衡化算法
实验过程
- 读入一幅灰度图像,存放在图像矩阵F中。(imread函数)。
- 获得输入图像尺寸M、N、C(size函数)。并将图像矩阵F中的数据由uint8类型转换为double类型以便后续处理。如果颜色通道数C>1,则将彩色图像转化为灰度图rgb2gray
- 计算图像F的灰度直方图h(imhist函数;或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。
- 计算计算原图的灰度分布概率hs。hs=h/(M*N) (i=0,1,…,255)。
- 计算原图灰度的累计分布hp0(使用cumsum函数)。
- hp1=hp0*255。
- 将hp1四舍五入,令hp1(1)=0。
- 根据步骤(6)得到的新旧图像灰度值的映射结果,设置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j),计算F(i,j)对应数组hp1中的位置x,得到hp1(x)并赋给新图像的对应像素值G(i,j)
- 将计算得到的新图像矩阵中所有点的灰度值由double转换为uint8。输出最终得到的结果图像。
测试代码
F = imread('.\im\pict1.png');[G]=imhisteq(F);figure,imshow(G);
实验所需图片
链接:https://pan.baidu.com/s/1LaxnZdLeY3LnKKv276E0pA
提取码:vk8y实验源码
function [J] = imhisteq(I) [height,width,d]=size(I); %获得输入图像尺寸M、N、C(size函数)if(d>1) I=rgb2gray(I); %如果颜色通道数C>1,则将彩色图像转化为灰度图rgb2grayendnbins = 256;%计算图像F的灰度直方图h(imhist函数;%或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。hist_0 = imhist(I,nbins)';%计算原图的灰度分布概率hs。hs=h/(M*N) (i=0,1,…,255)。hist_1 = hist_0/(height*width);%计算原图灰度的累计分布hp0(使用cumsum函数)hp_0 = cumsum(hist_1);%hp1=hp0*255 将hp1四舍五入,令hp1(1)=0hp_1 = round(hp_0*255);hp_1(1)=0;I0 = double(I);%置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j)for i=1:height for j=1:width GrayScale=I0(i,j); NewGrayScale = hp_1(GrayScale+1); J(i,j)=NewGrayScale; endend%计算得到的新图像矩阵中所有点的灰度值由double转换为uint8J = uint8(J); %转换uint8编码
测试结果
学如逆水行舟,不进则退
转载地址:https://chocolate.blog.csdn.net/article/details/106476763 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月05日 11时27分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
windows MQTT客户端
2019-04-29
LINUX下挂载(mount)查看树莓派镜像文件
2019-04-29
基于CH568芯片加密SD卡方案
2019-04-29
1元钱的超低成本单芯片USB单片机方案
2019-04-29
单片机/树莓派扩展双串口(TTL和RS485)
2019-04-29
JAVA(android)提取WIFI客流探针MAC地址源码
2019-04-29
基于CH568芯片的SATA电子盘方案
2019-04-29
linux下C语言判断网络是否连接
2019-04-29
STM32Cube_FW_F4_V1.17 F4固件包百度网盘下载
2019-04-29
猿来绘Java-35-线程的同步(生产者和消费者问题)
2019-04-29
猿来绘Java-36-解决线程安全问题
2019-04-29
猿来绘Java-37-ReentrantLock解决线程安全问题
2019-04-29
猿来绘Java-38-生产者消费者模型
2019-04-29
猿来绘Java-39-JDK8的新日期时间类
2019-04-29
猿来绘Java-40-比较器(Comparable 接口与 CompareTo方法)
2019-04-29
猿来绘Java-41-源码分析String对象的数组的排序(JDK1.8)
2019-04-29
猿来绘Java-42-枚举类的使用
2019-04-29
猿来绘Java-43-初步认识注解
2019-04-29
猿来绘Java-44-自定义注解和元注解
2019-04-29
猿来绘Java-45-JDK8新特性可重复注解和类型注解
2019-04-29