MATLAB直方图均衡化代码

求个直方图均衡化得程序... 求个直方图均衡化得程序 展开
 我来答
匿名用户
推荐于2017-11-25
展开全部
%函数功能,画出图像的直方图,并对图像进行直方图均衡
%直接读图像abc.jpg,读到tuu中
%graydis是原始直方图各灰度级像素个数
%原始直方图graydispro,利用原始直方图计算原始累计直方图graydispro
%t[]计算和原始灰度对应的新的灰度t[],建立映射关系,t坐标代表原始的灰度,t[]代表对应原始坐标的新坐标
%new_graydis是统计新直方图各灰度级像素个数
%计算新的灰度直方图new_graydispro,利用新的直方图计算新的累计直方图new_graydispro
%计算直方图均衡后的新图new_tu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
tuu=imread('abc.jpg'); %读入图片
tu=rgb2gray(tuu); %将彩色图片转换为灰度图
graydis=zeros(1,256); %设置矩阵大小
graydispro=zeros(1,256);
new_graydis=zeros(1,256);
new_graydispro=zeros(1,256);
[h w]=size(tu);
new_tu=zeros(h,w);
%计算原始直方图各灰度级像素个数graydis
for x=1:h
for y=1:w
graydis(1,tu(x,y))=graydis(1,tu(x,y))+1;
end
end
%计算原始直方图graydispro
graydispro=graydis./sum(graydis);
subplot(1,2,1);
plot(graydispro);
title('灰度直方图');
xlabel('灰度值');ylabel('像素的概率密度');
%计算原始累计直方图
for i=2:256
graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);
end
%计算和原始灰度对应的新的灰度t[],建立映射关系
for i=1:256
t(1,i)=floor(254*graydispro(1,i)+0.5);
end
%统计新直方图各灰度级像素个数new_graydis
for i=1:256
new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i);
end
%计算新的灰度直方图new_graydispro
new_graydispro=new_graydis./sum(new_graydis);
subplot(1,2,2);
plot(new_graydispro);
title('均衡化后的灰度直方图');
xlabel('灰度值');ylabel('像素的概率密度');
%计算直方图均衡后的新图new_tu
for x=1:h
for y=1:w
new_tu(x,y)=t(1,tu(x,y));
end
end
figure,imshow(tu,[]);
title('原图');
figure,imshow(new_tu,[]);
title('直方图均衡化后的图');
东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
匿名用户
2013-05-03
展开全部
你好。
很幸运看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
祝你好运~!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PythonX档案
2021-03-25
知道答主
回答量:76
采纳率:0%
帮助的人:3.7万
展开全部

Opencv13(直方图和均衡化)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热巴狂魔
2018-05-14
知道答主
回答量:1
采纳率:0%
帮助的人:871
展开全部
  • I = imread('rice.png');  

  • [height,width] = size(I);  

  • figure  

  • subplot(221)  

  • imshow(I)%显示原始图像  

  • subplot(222)  

  • imhist(I)%显示原始图像直方图  

  • %进行像素灰度统计;  

  • NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级  

  • for i = 1:height  

  • for j = 1: width  

  • NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  

  • end  

  • end  

  • %计算灰度分布密度  

  • ProbPixel = zeros(1,256);  

  • for i = 1:256  

  • ProbPixel(i) = NumPixel(i) / (height * width * 1.0);  

  • end  

  • %计算累计直方图分布  

  • CumuPixel = zeros(1,256);  

  • for i = 1:256  

  • if i == 1  

  • CumuPixel(i) = ProbPixel(i);  

  • else  

  • CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);  

  • end  

  • end  

  • %累计分布取整  

  • CumuPixel = uint8(255 .* CumuPixel + 0.5);  

  • %对灰度值进行映射(均衡化)  

  • for i = 1:height  

  • for j = 1: width  

  • I(i,j) = CumuPixel(I(i,j));  

  • end  

  • end  

  • subplot(223)  

  • imshow(I)%显示原始图像  

  • subplot(224)  

  • imhist(I)%显示原始图像直方图  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式