【转】 直方图规范化用于图像增强 matlab程序
来源:互联网 发布:公司运营数据分析 编辑:程序博客网 时间:2024/05/09 21:13
直方图规范化用于图像增强 matlab程序
1. 直方图的规范化。处理图像:2.bmp。
1) 单映射规则(single mapping law,SML)
2) 组映射规则(group mapping law,GML)
3) 比较SML和GML的误差大小。
规定化函数 y=x
源程序:(参考原理自己写 有两幅图没输出来)
function[]=H_Matching()
clear;
close all;
I=imread('2.bmp');
diff=zeros(256,256);
diff=double(diff);
HistogramSML=zeros(256);
%HistogramSML=double(HistogramSML);
HistogramGML=zeros(256);
%HistogramGML=double(HistogramGML);
scr=zeros(256);
%scr=double(scr);
dest=zeros(256);
%dest=double(dest);
for k=1:256
scr(k+1)=length(find(I==k));
end
scrpro=scr/sum(scr);
for i=2:256
scrpro(i)=scrpro(i-1)+scrpro(i);
end
for i=1:256
dest(i)=i;
end
destpro=dest/sum(dest);
for i=2:256
destpro(i)=destpro(i-1)+destpro(i);
end
for j=1:256
for i=1:256
diff(i,j)=destpro(i)-scrpro(j);
if diff(i,j)<0
diff(i,j)=-diff(i,j);
end
end
end
%SML
for j=1:256
minx=0;
minvalue=diff(1,j);
for i=2:256
if minvalue>diff(i,j)
minvalue=diff(i,j);
minx=i;
end
end
HistogramSML(j)=minx;
end
%SML规定化后直方图
SH=zeros(256);
SH=double(SH);
for i=1:256
SH(HistogramSML(i)+1)=SH(HistogramSML(i)+1)+scr(i);
end
%规定化后概率直方图
SHpro=SH/sum(SH);
subplot(2,3,2);
plot(SHpro);
title('SML映射后的概率直方图');
xlabel('灰度值');
ylabel('概率密度');
%GML
lastStartY=1;
lastEndY=1;
startY=1;
endY=1;
for i=1:256
minvalue=diff(i,1);
for j=2:256
if minvalue>diff(i,j)
minvalue=diff(i,j);
endY=j;
end
end
if (startY~= lastStartY) || (endY~=lastEndY)
for k=startY:endY
HistogramGML(k)=i;
end
lastStartY=startY;
lastEndY=endY;
startY=lastEndY+1;
end
end
%GML规定化后直方图
GH=zeros(256);
GH=double(GH);
for i=1:256
GH(HistogramGML(i)+1)=GH(HistogramGML(i)+1)+scr(i);
end
%规定化后概率直方图
GHpro=GH/sum(GH);
subplot(2,3,3);
plot(GHpro);
title('GML映射后的概率直方图');
xlabel('灰度值');
ylabel('概率密度');
S=zeros(256,256);
%S=double(S);
G=zeros(256,256);
%G=double(G);
subplot(2,3,4);
imshow(I);
subplot(2,4,1);
K=rgb2gray(I);
imhist(K);
title('origin');
for i=1:256
for j=1:256
S(i,j)=HistogramSML(I(i,j)+1);
end
end
subplot(2,3,5);
imshow(S);
title('SML');
for i=1:256
for j=1:256
G(i,j)=HistogramGML(I(i,j)+1);
end
end
subplot(2,3,6);
imshow(G);
title('GML');
运行结果:
标准结果:
- 直方图规范化用于图像增强 matlab程序
- 【转】 直方图规范化用于图像增强 matlab程序
- MATLAB图像增强程序
- 【转】 MATLAB图像增强程序举例
- 图像增强-直方图增强
- MATLAB图像增强程序举例
- MATLAB图像增强程序举例
- matlab 数字图像处理 图像增强 空域 直方图修正
- 彩色图像--图像增强 直方图增强
- matlab 图像二维直方图
- 图像的直方图matlab
- 【图像处理】MATLAB:直方图
- 图像增强之直方图处理
- OpenCV直方图图像增强算法
- 图像增强-直方图均衡化
- 直方图均衡化,图像增强
- 图像预处理--灰度直方图--图像增强
- 图像增强(MATLAB)
- 线充的皈依,苹果向识别电阻说再见。
- 开源DataGridView扩展(4) 自定义带序号的行首
- GDCPC2015题解 by lby@SYSU_Spirit_Moon
- Android中Preference的使用以及监听事件分析
- CSU1631: Facility Locations
- 【转】 直方图规范化用于图像增强 matlab程序
- Storm的一些重要的bug issues
- docker 初识--笔记
- 开源DataGridView扩展(5) 简单实现统计行,有更好的方法吗?
- C语言解析笔记
- 数组中出现次数超过一半的数字
- 编程之美学习笔记--一摞烙饼的排序
- Android开发规范
- Java应用类的包名为什么不能以java.开头?