matlab 简单直方图输出(问题不难只是我是MATLAB菜鸟,希望哪位高手能帮下)

weichaolong100 2009-03-27 09:35:21
前面的问题已经解决了非常感谢4楼和5楼的高手

%函数功能,对图像进行直方图均衡
%直接读图像Img10_1.bmp,读到tu中
%graydis是原始直方图各灰度级像素个数
%原始直方图graydispro,利用原始直方图计算原始累计直方图graydispro
%t[]计算和原始灰度对应的新的灰度t[],建立映射关系,t坐标代表原始的灰度,t[]代表对应原始坐标的新坐标
%new_graydis是统计新直方图各灰度级像素个数
%计算新的灰度直方图new_graydispro,利用新的直方图计算新的累计直方图new_graydispro
%计算直方图均衡后的新图new_tu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear all
close all
tu=imread('lena.bmp');
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);
%计算原始累计直方图
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);
%计算直方图均衡后的新图new_tu
for x=1:h
for y=1:w
new_tu(x,y)=t(1,tu(x,y));
end
end
figure,imshow(tu);
figure,imshow(new_tu,[]);
figure,imshow(new_tu,[]);

%输出图像直方图

h=imhist(new_tu)
h1=h(1:10:255);
horz=1:10:255;
stem(horz,h1,'fill')
axis([0 255 0 500])
set(gca,'xtick',[0:10:255])
set(gca,'ytick',[0:20:500])

图像输出都正常
输出tu(原)图像的直方图正常,但是输出new_tu(变化后)图像时的直方图就不正常了,调了很久都没解决出来,希望哪位好心人耐心看下帮忙解决下
...全文
1699 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
czx_main 2009-04-03
  • 打赏
  • 举报
回复
没用过“MLB”。。。。。。。
weichaolong100 2009-03-27
  • 打赏
  • 举报
回复
问题刚刚解决了,谢谢进来的高手!

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧