直方图规定化
2015-08-26 10:36
204 查看
一、直方图规定化的原理和步骤
二、具体实现
相应结果:
二、具体实现
clear all; close all; clc; %% 计算给定的直方图累积分布函数 r=127; x=-r:r+1; sigma=20; y1=exp(-((x-80).^2)/(2*sigma^2)); y2=exp(-((x+80).^2)/(2*sigma^2)); y=y1+y2; %双峰高斯函数,任意函数都可以 y=y/sum(y); %归一化,使函数符合概率分布的sum(y)==1这样一个规律 G=zeros(1,256); %函数的累积直方图 G=cumsum(y); %% 计算待处理的累积分布函数 img=imread('pout.tif'); [m n]=size(img); hist=imhist(img); %imhist能返回每个灰度级的像素值,返回的是列向量 p=hist'/(m*n); s=zeros(1,256); %待处理图像的累积直方图 s=cumsum(p); subplot(1,2,1) imshow(img); subplot(1,2,2) imhist(img) %% 相应的映射 for i=1:256 tmp{i}=G-s(i); tmp{i}=abs(tmp{i}); %因为要找距离最近的点,所以取绝对值 [a index(i)]=min(tmp{i}); %找到两个累积直方图距离最近的点 end imgn=zeros(m,n); for i=1:m for j=1:n imgn(i,j)=index(img(i,j)+1)-1; %由原图的灰度通过索引映射到新的灰度 end end %% figure, subplot(1,2,1) imshow(uint8(imgn)) subplot(1,2,2) imhist(uint8(imgn)) %新图的直方图 ---------- 本代码参考:http://www.cnblogs.com/tiandsp/archive/2012/12/19/2825418.html
相应结果:
相关文章推荐
- C++指针加整数、两个指针相减的问题
- EXPLAIN sql优化方法2 Using temporary ; Using filesort
- 修改arm开发板的IP地址
- 快速排序原理
- zoj2112
- PHP查询数据库中满足条件的记录条数(二种实现方法)
- ORA-00904: "STUDENTNUMBER": 标识符无效
- javascript--QUnit【javascript单元测试框架】
- HTTP头字段总结
- NOI系列赛中 C++容器使用总结
- contourArea函数
- HDU 1171 Big Event in HDU (由01背包演变的水题)
- UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
- app上传 需要的icon
- ecshop 分页
- UVA-1347 Tour
- C语言判断字符是否为可打印字符的方法
- eclipse java中路径问题
- 生命不易
- 【POJ2031】【最小生成树】【g++ f c++ lf】