直方图规定化——Matlab实现及其原理

更新时间:2023-07-20 18:30:19 阅读: 评论:0

直⽅图规定化——Matlab实现及其原理
⼀.⽤法
灰度均衡化虽然能增⼤对⽐度、丰富灰度级数。但是为覆盖整个灰度区间的操作,且不受控制,即只能扩展到整个灰度区间,不能根据我们的实际需要作出相应调整。
⽽灰度规定化可以弥补这个缺憾,能让我们通过灰度变换得到我们想要的灰度分布区间。在Matlab中没有直接实现灰度规定化的函数。但是我们可以通过imhist和histeq两个函数的结合使⽤来实现。⽰例程序如下:
I_M = imread('pout.tif');
I = imread('tire.tif');
I_M_imhist = imhist(I_M);%产⽣规定化模板朋友圈怎么分组
J = histeq(I,I_M_imhist);%直⽅图规定化
imhist(I); %显⽰变换前的直⽅图
imhist(I_M);%产⽣规定化模板
imhist(J);% 规定化变换后的直⽅图
⼆.原理
道路直⽅图规定化⾸先也得求灰度图像的灰度级数的概率密度和累计分布函数,得到原始图像和模板图像的灰度累计分布函数直⽅图后(这⾥的模板的灰度级数N和原始图像的灰度级数M我们只讨论M>=N的情况),有两种⽅式将模板灰度分布特征映射到原始图像中。⼀是单映射规则(SML),⼆是组映射规则(GML)。
1.      单映射规则(SML)
单映射规则具体操作步骤如下:对⼀原始图像的每个灰度级数i的灰度累计分布函数(nor_I_hist(i))与模板图像灰度级数灰度累计分布函数值(nor_M_hist(i))作差值后取绝对值运算,⽐较运算得到的结果,差值绝对值的最⼩值对应的最⼩位置便是原始图像映射到模板图像的灰度值。
例:
设⼀幅原始图像和模板图像的灰度级数、灰度直⽅图、累计分布函数直⽅图呈如下分布:
表1-1
表中为灰度值为0的灰度级单映射时,分别⽤其累计分布函数直⽅图0.19与模板的累计分布函数直⽅图作差,发现差值绝对值的最⼩值在模板图像灰度级的3、4灰度级处,取最⼩位置处为3,故原始图像灰度级为0的位置单映射后的灰度值为3。其余灰度级同理。
2.组映射规则(GML)
组映射也是先求出原始图像和模板图像的累计分布函数直⽅图。在此基础上,与单映射相反,组映射是⽤模板图像中每个灰度级的累计分布函数(灰度直⽅图概率密度为0的灰度级除外)依次与原始图像的所有累计分布函数值作差,在所有差值中找出绝对值最⼩值所对应的原始图像灰度级,将该灰度级与上⼀次映射灰度级之间的原始图像灰度级都映射为模板图像中与之差值绝对值最⼩的灰度级。例如,对于表1-1的灰度图像,若采⽤组映射⽅法,则应从模板图像灰度级数为3的位置开始运算映射,即⽤0.2分别与原始图像的累计分布函数直⽅图作差,发现在0.19处有绝对值最⼩值,于是就将原始图像灰度值为0映射为3,下⼀步则接着从灰度级为5的位置开始映射,即0.8分别与原始图像的累积分布直⽅图作差,发现在0.81出有最⼩值,对应原始图像中灰度级数为3的位置,于是原始图像中灰度级1~3都映射为5。其余同理。
三.代码⽰例
阐述完上述原理后,我们通过基于Matlab的编程来进⼀步验证我们⽅法的正确性。
1.      实现单映射(SML)代码⽰例:
I = imread('pout.tif');
M = imread('tire.tif');
I_out = I;
I_hist = imhist(I);
M_hist = imhist(M);%概率密度函数,即灰度直⽅图
nor_I_hist = cumsum(I_hist)/numel(I);
nor_M_hist = cumsum(M_hist)/numel(M);%累积分布函数
%累积分布函数归⼀化
[m_I,n_I] = size(nor_I_hist);
[m_M,n_M] = size(nor_M_hist);
imp=ones(m_M,1);
for i=1:m_I
for j=1:m_M
imp(j) =abs( nor_I_hist(i) -nor_M_hist(j));%作差值绝对
%值运算
end
nn = find(imp==min(imp));%找到最⼩值所在灰度级
ori = find(I==i-1);
L = length(ori);%测量nummin的长度,若⼤于1,则说明有概率密度
%为0的位置,则取最后位。
I_out(ori) = nn(L);  %将模板灰度映射到原始图像中
end
%显⽰原始图像、模板图像、变换后图像的灰度直⽅图
subplot(2,3,1),imhist(I),title('hist of orignal image')
subplot(2,3,2),imhist(M),title('hist of template image')
subplot(2,3,3),imhist(I_out),title('hist of output image')
subplot(2,3,4),imshow(I),title('orignal image')
subplot(2,3,5),imshow(M),title('template image')
subplot(2,3,6),imshow(I_out),title('output image')
S ML结果
1.      组映射(GML)代码⽰例:
I = imread('tire.tif');
M = imread('pout.tif');
[m,n] = size(I);
I_out = im2uint8(zeros(m,n));
I_hist = imhist(I);
M_hist = imhist(M);
nor_I_hist = cumsum(I_hist)/numel(I);
nor_M_hist = cumsum(M_hist)/numel(M);
[M_m,M_n] = size(M_hist);
[I_m,I_n] = size(I_hist);
情商英语tick = 1;
IM = zeros(I_m,1);胡萝卜丸子
for i = 1:M_m%
if M_hist(i) == 0%剔除掉直⽅图概率密度为0的灰度级
continue;
el
for j = 1:I_m
IM(j) =abs(nor_M_hist(i)-nor_I_hist(j));
end
nummin = find(IM == min(IM));% 找到差值最⼩的灰度值位置,便是原
%始图像及其之前的灰度值都映射为新的灰度值i
L= length(nummin);%测量nummin的长度,若⼤于1,则说明有概率密度
怎样评价一个人
%为0的位置,则取最后位。
for k=tick:nummin(L)%从上⼀次映射灰度级到本次灰度级之间的灰度级
matchgray = find(I==k-1);
I_out(matchgray) = i-1;%赋值到原始图像中
end
tick = nummin(L);
end
end假猪蹄
%显⽰原始图像、模板图像、变换后图像的灰度直⽅图
subplot(2,3,1),imhist(I),title('hist of orignal image')我们只有一个地球
subplot(2,3,2),imhist(M),title('hist of template image')
subplot(2,3,3),imhist(I_out),title('hist of output image')
subplot(2,3,4),imshow(I),title('orignal image')
什么是erpsubplot(2,3,5),imshow(M),title('template image')
subplot(2,3,6),imshow(I_out),title('output image')
3. 单映射法(SML)和组映射法(GML)的⽐较
⾸先,我们使⽤表1-1分别在单映射和组映射下得到的结果来量化误差,列于表3-1中。
表3-1
对单映射来说,我们可以⽤映射时产⽣的累积分布函数差值来量化映射误差,具体为:|0.44-0.20|+||+|(0.89-0.44)-(0.8-0.2)|+|(1.00-0.89)-(1-0.8)|=0.48
对组映射来说,则为:|0.2-0.19|+|(0.81-0.19)-(0.8-0.2)|+|(1.0-0.8)-(1-0.81)|=0.04
从量化数据误差来看,组映射的误差明显要⼩于单映射。在此基础上,为验证结论的普遍性,我们⽤期望误差来说明,当把某个模板图像tem(i)灰度映射到原始图像ORI(i)时,对于单映射法,由于是采⽤
⼀原始灰度与所有模板灰度值分别作差得到作差绝对值最⼩值位置,故最⼤可能误差为u/2,其中u表⽰最⼩差值绝对值处的模板灰度直⽅图;对于组映射法,则是⽤⼀模板灰度值分别与所有原始灰度图像作差,则最⼤可能误差为s/2,其中s表⽰最⼩值差值处的原始图像灰度直⽅图。由于根据前⾯所述,我们讨论的都是模板灰度级数N⼩于等于原始图像灰度级数M的情况,故必有s/(2*M),因此组映射的期望误差必⼩于单映射误差,需要提及的是,上述Matlab代码是通过组映射实现的灰度规定化。

本文发布于:2023-07-20 18:30:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1089438.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   灰度   映射   原始   灰度级
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图