直方图均衡化 原理、流程、公式推导及matlab实现

您所在的位置:网站首页 直方图均衡化处理过程 直方图均衡化 原理、流程、公式推导及matlab实现

直方图均衡化 原理、流程、公式推导及matlab实现

2023-09-05 12:24| 来源: 网络整理| 查看: 265

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 附上按照上述流程实现的MATLAB代码:

clc;close all;clear all; H= imread('测试图\lena512.bmp'); H=H(:,:,1); %判断是否为三通道彩色图片 若是 则将其灰度化 if length(size(H))>2 H=rgb2gray(H); end %获取图片的尺寸 便于计算总像素数 即m*n [m,n]=size(H); %生成一个一行256列的矩阵 p=zeros(1,256); % 统计各灰度的像素个数 %find(H==i) 是在图像矩阵里面寻找灰度为i的点坐标 % 因为矩阵是从1开始的 所以为p(i+1) for i=0:255 p(i+1)=length(find(H==i))/(m*n); end subplot(2,2,1); imshow(H); title('原图'); subplot(2,2,2); % 显示原图的直方图 bar(0:255,p,'b'); title('原图直方图'); % 利用循环 累加概率值 s=zeros(1,256); for i=1:256 for j=1:i s(i)=p(j)+s(i); %分布函数 end end %对s中的数先乘以255,再取整 a=round(s*255+0.5); b=H; %更新原图像的灰度 for i=0:255 b(H==i)=a(i+1); end subplot(2,2,3); imshow(b) title('均衡化后图像'); %统计更新后的概率 for i=0:255 GPeq(i+1)=sum(p(a==i)); end subplot(2,2,4); bar(0:255,GPeq,'b'); title('均衡化后的直方图');

运行后效果图: 在这里插入图片描述 实际上MATLAB自带直方图均衡函数adapthisteq以及灰度直方图显示函数imhist,用自带的函数进行操作,代码如下:

srcImage=imread('lula.jpg'); %转化成灰度图 grayImage=rgb2gray(srcImage); %在窗口中显示2*2排列图像 subplot(2,3,1); imshow(grayImage); title('原图像灰度图'); %绘制灰度直方图 subplot(2,3,2); imhist(grayImage); title('灰度直方图'); %对灰度直方图均衡化处理 subplot(2,3,3); H1=adapthisteq(grayImage);%灰度均衡化 imhist(H1); title('直方图均衡化'); subplot(2,3,4); imshow(H1);%显示调整后图像 title('直方图均衡化图像');

效果和自己写的代码类似: 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3