数字图像处理学3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通常写出具有可变数目的输入变量和输出变 量的函数是十分有用的。例如,变量varargin和 变量varargout。 function[m,n]=testhv3(varargin); function[varargout]=testhv4(m,n,p); 当varargin用作一个函数的输入变量时, MATLAB会将其置入一个单元数组中。该数组 接收由用户输入的变量数。 >>[m,n]=testhv3(f,[0 0.5 1.5],A,’label’);
nk p(rk ) n
rk 是离散形式下的第K级灰度,p(rk ) 是灰
度级的概率密度函数,nk 图像中出现K级灰度 的像素数,n为图像中的像素总数。

直方图处理核心函数 imhist 格式:h=imhist(f,b) f为输入图像,h为其直方图,b为灰度级个 数,默认值为256。若b=2,则亮度标度范围被 分为两个部分:0至127和128至255。所得的直 方图将只有两个值。 p=imhist(f,b)/numel(f) 为归一化的直方图。
• method=varargin{1}; switch method case ‘neg’ g=imcomplement(f); case ‘log’ if length(varargin)==1 c=1; elseif length(varargin)==2 c=varargin{2}; elseif length(varargin)==3
图像增强技术基本上可分为两大类:一类是 空域处理法;一类是频域处理法。 空域法是直接对图像的像素进行处理,基本 上是以灰度映射变换为基础的。所用的映射变 换取决于增强的目的,例如增加图像的对比度 ,改善图像的灰度层次等处理均属空域法处理 。

空域法处理的表达式:
g(x,y)=T[f(x,y)]
其中f(x,y)为输入图像,g(x,y)为输出图像,
第3章 亮度变换与空间滤波 3.1 背景知识 • 图像增强的概念 图像增强是数字图像处理的基本内容之一。 图像增强是指按特定的需要突出一副图像中的 某些信息,同时,削弱或去除某些不需要的信 息的处理方法。其主要目的是使处理后的图像 对某种特定的应用来说,比原始图像更适用。 应该明确的是增强处理并不能增强原始图像的 信息,其结果是增强对某种信息的辨别能力。
T是对图像f进行增强处理的操作符。若T是定义 在每个点(x,y)上的,则T是点操作;若T是定义 在点(x,y)的指定邻域内,则T是模板操作。
3.2 亮度变换函数 由于亮度函数仅取决于亮度的值,而与
(x,y)无关,所以亮度变换函数通常可以写做
s=T(r)
其中,r表示图像f中相应点(x,y)的亮度,s表
g=1./(1+(m./(f+eps)).^E); otherwise error(‘Unknown enhancement method.’) end g=changeclass(classin,g); 以下调用intrans函数 >>g=intrans(f,’stretch,mean2(im2double(f)), 0.9); >>figure,imshow(g)
直方图均衡化举例 >>imshow(f); >>figure,imhist(f) >>ylim('auto') %自动设定坐标轴的取值范围和刻度线 >>g=histeq(f,256); >>figure,imshow(g) >>figure,imhist(g) >>ylim('auto')
• 求变换函数 >>hnorm=imhist(f)./numel(f); >>cdf=cumsum(hnorm); >>x=linspace(0,1,256); >>plot(x,cdf) >>axis([0 1 0 1]) >>set(gca,’xtick’,0:.2:1) >>set(gca,’ytick’,0:.2:1) >>xlabel(‘input intensity values’, ‘fontsize’,9)
3.杆状图绘制直方图
stem(horz,v, ‘color_linestyle_marker’, ‘fill’) color_linestyle_marker的意义见表3.1。 >>h=imhist(g); >>h1=h(1:10:256); >>horz=1:10:256 >>stem(horz,h1,'fill') >>set (gca,'xtick',[0:50:255]) >>set (gca, 'ytick',[0:2000:15000])
• 亮度标度的M函数—gscale g=gscale(f,method,low,high) %将图像输出映射到一个特定的范围。 method: full8, full16, minmax
rk
3.3 直方图处理与函数绘图 • 图像亮度(灰度)直方图 直方图是反映一副图像中的灰度级与出现这 种灰度的概率之间的关系的图形。 假如一副图像在[0,G]内有L个灰度级,其直 方图定义为:
• 亮度变换的自定义函数—intrans函数 function g=intrans(f,varargin) %intrans performs intensity (grey-level) transformations. %………………………… error(nargchk(2,4,nargin)) classin=class(f); if strcmp(class(f),’double’) &max(f(:))>1&… ~strcmp(varargin{1},’log’) f=mat2gray(f); else f=im2double(f); end
• 对数和对比度拉伸变换 对数变换的应用主要压缩图像动态范围,输出 高对比度的图像。对数变换的表达式为:
g=c*log(1+double(f));
当执行一个对数变换时,期望将导致的压缩
值还原为显示的全范围,可以执行:
gs=im2uint8(mat2gray(g));
对比度拉伸变换函数可将输入值低于m的灰度
>>h=imhist(f); >>h1=h(1:10:256); >>horz=1:10:256; >>bar(horz,h1) >>axis([0 255 0 15000]) %设置水平轴和垂直轴的最大值和最小值 >>set (gca,'xtick',0:50:255) >>set (gca, 'ytick',0:2000:15000) %设置水平轴和垂直轴的刻度
级压缩为输出图像中较暗灰度级的较窄范围内
;可将输入值高于m的灰度级压缩为输出图像
中较亮灰度级的较窄范围内,从而输出一副高
对比度的图像。对比度拉伸变换函数的表达式:
s=T(r)=1/1+(m/r)^E
E控制函数的斜率。
• 编写亮度变换的一些实用函数 如何处理可变数量的输入和输出? 检测输入到M函数的参量数目,可用: n=nargin 检测M函数的输出参量数目,可用: n=nargout 函数nargchk用于函数体中,用于检测传递的 参量数目是否正确。 msg=nargchk(low,high,number)
1
1
直方图规定化函数 g=histeq(f,hspec) f 是输入图像,hspec为指定的直方图(一个 由指定值构成的行向量),g为输出图像。其 直方图近似等于指定的直方图hspec.
c=varargin{2}; classin= varargin{3}; else error(‘Incorrect number of inputs for the log option.’) end g=c*(log(1+double(f)); case ‘gamma’ if length(varargin)<2 error(‘Not enough inputs for the gamma option.’) end
示图像g中相应点(x,y)的亮度。

函数imadjust 函数语法: g=imadjust (f, [low_in high_in], [low_out high_out], gamma) 该函数将图像f中的亮度值映射到g中的新值 ,即low_in 至high_in之间的值映射到low_out 和high_out之间的值。low_in以下的值映射到 low_out , high_in以上的值映射到high_out。
产生近似均匀的直方图结果;在不同的情况下
,并不是总需要具有均匀直方图的图像,有时
需要具有特定的直方图的图像,以便能够对图
像中的某些灰度级加以增强,这就是直方图规
定化。
• 算法讨论
s T (r ) pr ( )d
0
r
s H ( z ) p z ( ) d
0
z
z H (s) H [T (r )]
直方图均衡化处理是以累积分布函数为变换 函数的。目的是把原始图像的灰度直方图从比 较集中的某个灰度区间变成在全部灰度范围内 的均匀分布。
s T (r ) pr ( )d
0
r
直方图均衡化函数histeq
g=histeq(f,nlev)
f为输入图像, nlev为输出图像指定的灰度级
数。若nlev等于L,则histeq直接执行变换函数 T(r)。若nlev小于 L,则histeq划分灰度级,以 便能够得到较为平坦的直方图, nlev默认值为 64。
>>ylabel(‘output intensity values’, ‘fontsize’,9) >>test(0.18,0.5,’Transformation function’, ‘fontsize’,9)
• 直方图规定化 直方图均衡化通过扩展图像的灰度级到较 宽亮度尺寸的范围来实现图像增强,但它只能
• 计算并绘制直方图 1.使用工具箱函数: >>imhist(f) 2.条形图绘制直方图 bar(horz,v,width) v是一个行向量,它包含将被绘制的点; horz 是一个与v有着相同维数的向量,它包含水平标 度值的增量; width是一个值在0和1之间的数, 决定条形图的宽度,默认值为0.8。
除图像f之外,函数imadjust所有的输入输出
均指定在0和1之间,而不论f的类。若f 是uint8
类图像,则函数imadjust将乘以255来确定应用
中的实际值。 gamma为矫正量,它指定亮度变换函数曲线 的形状,若gamma<1,图像变亮;若 gamma>1,图像变暗。若省略则默认为1。
• 负片图像: >>g1=imadjust(f,[0,1],[1,0]); 或>>g1=imcomplement(f); • 灰度增强图像: >>g2=imadjust(f,[0.5,0.75],[0,1]); • gamma变换图像: >>g3=imadjust(f,[ ],[ ],2);
wenku.baidu.com
4.连续型直方图 >>h=imhist(f); >>plot(f) >>axis([0 255 0 15000]) >>set (gca,'xtick',[0:50:255]) >>set (gca, 'ytick',[0:2000:15000])
• 直方图均衡化 假如一副给定的图像的灰度级r分布在[0,1]区 间内,可以对任一个r值进行如下变换: s=T(r) 变换函数T(r)应满足下列条件: 1. T(r)单调增加; 2. T(r)位于 [0,1]区间内 分析可知,通过变换函数T(r)可以控制图像 灰度级的概率密度函数,从而改变图像的灰度 层次。
gam=varargin{2}; g=imadjust(f,[ ],[ ],gam); case ‘stretch’ if length(varargin)==1 m=mean(f); E=4.0; elseif length(varargin)==3 m=varargin{2}; E=varargin{3}; else error (‘Incorrect number of inputs for the stretch option.’) end
相关文档
最新文档