




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1彩色图像转灰度图像1、分量法2、最大值法3、平均值法4、加权平均法4.1彩色图像转灰度图像1、分量法4.1彩色图像转灰度图像GetPixel函数功能:该函数检索指定坐标点的像素的RGB颜色值。函数原型:COLORREFGetPixel(HDChdc,intnXPos,intnYPos)参数:
hdc:设备环境句柄。
nXPos:指定要检查的像素点的逻辑X轴坐标。
nYPos:指定要检查的像素点的逻辑Y轴坐标。返回值:返回值是该象像点的RGB值。声明方法:PrivateDeclareFunctionGetPixelLib"gdi32"(ByValhdcAsLong,ByValxAsLong,ByValYAsLong)AsLong4.1彩色图像转灰度图像GetPixel声明方法:4.1彩色图像转灰度图像SetPixel函数功能:该函数将指定坐标处的像素设为指定的颜色。函数原型:COLORREFSetPixel(HDChdc,intX,intY,COLORREFcrColor);参数:
hdc:设备环境句柄。
X:指定要设置的点的X轴坐标,按逻辑单位表示坐标。
Y:指定要设置的点的Y轴坐标,按逻辑单位表示坐标。
crColor:指定要用来绘制该点的颜色。返回值:如果函数执行成功,那么返回值就是函数设置像素的RGB颜色值。这个值可能与crColor指定的颜色有所不同,之所以有时发生这种情况是因为没有找到对指定颜色进行真正匹配造成的;如果函数失败,那么返回值是-1。
声明方法:PrivateDeclareFunctionSetPixelVLib"gdi32"(ByValhdcAsLong,ByValxAsLong,ByValYAsLong,ByValcrColorAsLong)AsLong4.1彩色图像转灰度图像SetPixel声明方法:4.1彩色图像转灰度图像1、分量法(R分量法)
PrivateSubCommand2_Click()Picture1.Picture=Picture2.Picturew=Picture1.ScaleWidthh=Picture1.ScaleHeightFori=0Tow-1Forj=0Toh-1rgb=GetPixel(Picture1.hdc,i,j)Red=rgbmod256'获得红色值
Green=rgb\256mod256'获得绿色值
Blue=rgb\65536'获得兰色值
'取R分量作为灰度
rgb=RGB(Red,Red,Red)SetPixelVPicture2.hdc,i,j,rgbNextjNextiPicture2.Picture=Picture2.ImageEndSub4.1彩色图像转灰度图像1、分量法(R分量法)4.1彩色图像转灰度图像2、最大值法PrivateSubCommand3_Click()w=Picture1.ScaleWidthh=Picture1.ScaleHeightFori=0Tow-1Forj=0Toh-1rgb1=GetPixel(Picture1.hdc,i,j)Red=rgb1Mod256'获得红色值
Green=rgb1\256Mod256'获得绿色值
Blue=rgb1\65536'获得兰色值
'取R、G、B分量最大值作为灰度
IfRed>GreenAndRed>BlueThenCol=RedIfGreen>RedAndGreen>BlueThenCol=GreenIfBlue>RedAndBlue>GreenThenCol=Bluergb1=RGB(Col,Col,Col)SetPixelVPicture2.hdc,i,j,rgb1NextjNextiPicture2.Picture=Picture2.ImageEndSub4.1彩色图像转灰度图像2、最大值法PrivateSu4.1彩色图像转灰度图像3、平均值法PrivateSubCommand4_Click()Picture1.Picture=Picture2.Picturew=Picture1.ScaleWidthh=Picture1.ScaleHeightFori=0Tow-1Forj=0Toh-1rgb1=GetPixel(Picture1.hdc,i,j)
Red=rgb1Mod256'获得红色值
Green=rgb1\256Mod256'获得绿色值
Blue=rgb1\65536'获得兰色值
'取R、G、B三分量平均值作为灰度
col=(Red+Green+Blue)/3rgb1=RGB(col,col,col)SetPixelVPicture2.hdc,i,j,rgb1NextjNextiPicture2.Picture=Picture2.ImageEndSub4.1彩色图像转灰度图像3、平均值法PrivateSu4.1彩色图像转灰度图像4、加权平均法PrivateSubCommand5_Click()Picture1.Picture=Picture2.Picturew=Picture1.ScaleWidthh=Picture1.ScaleHeightFori=0Tow-1Forj=0Toh-1rgb1=GetPixel(Picture1.hdc,i,j)Blue=rgb1mod256'获得兰色值
Red=rgb1\256mod256'获得红色值
Green=rgb1\65536'获得绿色值
'将三原色取其权值转换为灰度
Y=(9798*Red+19235*Green+3735*Blue)\32768'将灰度转换为RGB
rgb1=RGB(Y,Y,Y)
SetPixelVpicture2.hdc,i,j,rgb1
Nextj
NextiPicture2.Picture=Picture2.ImageEndSub4.1彩色图像转灰度图像4、加权平均法PrivateS4.2直方图4.2.1直方图的基本概念灰度直方图表示图像中具有某种灰度级的像素的个数。66463132664166654366466112234665432115243546526144.2直方图4.2.1直方图的基本概念664634.2.2直方图的性质
(3)图像各子区的直方图之和就等于该图像全图的直方图。(1)只含图像各灰度值像素出现的概率,而无位置信息。(2)图像与直方图之间是多对一的映射关系。4.2.2直方图的性质(3)图像各子区的直方图之和
在离散形式下,灰度直方图的计算如下:在坐标中做出rk与pr(rk)的关系图形,即为该图像的直方图。rk代表离散灰度级pr(rk)代表概率密度函数,表示原始图像的灰度分布nk为图像中出现rk级灰度的像素数n是图像像素总数4.2.3直方图的计算与简单绘制
在离散形式下,灰度直方图的计算如下:在坐标中Line方法:object.Line(x1,y1)-(x2,y2),RGB(Red,Green,Blue)
(x1,y1)是直线的起点坐标,若省略(x1,y1),则起点为当前坐标位置(CurrentX,CurrentY)。(x2,y2)是直线的终点坐标。直方图程序设计scale方法:object.scale(x1,y1)-(x2,y2)用于设定坐标系统。(x1,y1)是坐标系统的左上角坐标,(x2,y2)是坐标系统的右下角坐标。设计一图像直方图程序Line方法:直方图程序设计scale方法:设计一图像直方图
一幅给定图像的灰度级分布在0≤r≤1范围内(灰度级进行了归一)。可以对[0,1]内的任一r值进行变换
s=T(r)
变换函数T(r)应满足下列条件:(1)在0≤r≤1区间内,T(r)值单调增加;(2)对于0≤r≤1,有0≤s≤1。保证了图像的灰度级从白到黑的次序不变保证了映射变换后的像素灰度值在容许的范围内4.2.4直方图的映射变换一幅给定图像的灰度级分布在0≤r≤1范围内(灰度级进
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。变换函数为式中:ω是积分变量,而就是r的累积分布函数。4.2.5直方图均衡直方图均衡化处理是以累积分布函数变换法为基础的式中:当灰度级是离散值时:其反变换式为6646313266416665436646611223466543214.2.5直方图均衡当灰度级是离散值时:其反变换式为6646313266416rknknk/nr5=1r1=1/5r2=2/5r3=3/5r4=4/5r0=014/364/365/366/362/365/36n5=14n1=4n2=5n3=6n4=2n0=51234564.2.5直方图均衡123456rknknk/nr5=1r1=1/5r2=2/5r3=3/5Matlab程序:clearall;closeall;I=imread('pout.tif');subplot(2,2,1),imshow(I);title('原图像');subplot(2,2,2),imhist(I);title('原图像的直方图');J=histeq(I);%直方图均衡化subplot(2,2,3),imshow(J);title('直方图均衡化后的图像');subplot(2,2,4),imhist(J);title('均衡化后的图像的直方图')Matlab程序:4.2.5直方图均衡4.2.5直方图均衡4.3灰度变换4.3.1灰度线性变换
原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩至[c,d],则线性变换可表示为:
4.3灰度变换4.3.1灰度线性变换2552550输入灰度输出灰度实例:逆反处理Forj=0Toh-1Fori=0Tow-1g(i,j)=255-f(i,j)NextiNextj2552550输入灰度输出灰度实例:逆反处理Forj=
突出感兴趣的灰度区间。常用的三段线性变换法其数学表达式如下:4.3.2分段线性变换突出感兴趣的灰度区间。4.3.2分段线性变换利用Matlab进行图像灰度变换利用Matlab进行图像灰度变换设计程序figure(1);i=imread('car.bmp');i=im2double(i);imshow(i);title('原图');figure(2);r=[0:0.001:1];s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1+0.3*(r-1));plot(r,s);title('变换公式');figure(3);T1=[i<0.35].*i*0.3+[i<=0.65].*[i>=0.35].*(0.105+2.6333*(i-0.35))+[i>0.65].*(1+0.3*(i-1));imshow(T1);title('变换后图像');imwrite(T1,'car_T1.bmp','bmp');im2double函数:如果输入是uint8,unit16,
或者是二值的logical类型,则函数im2double将其值归一化到0~1之间。如果输入本身就是double类型,输出还是double类型,并不进行归一化。设计程序im2double函数:如果输入是uint8,un结果演示结果演示4.3.3非线性变换常见的几种非线性变换函数4.3.3非线性变换常见的几种非线性变换函数2552550输入灰度输出灰度减小灰度G(x,y)=f(x,y)20<f(x,y)<12552550输入灰度输出灰度减小灰度G(x,y)=f(x,减小灰度I=imread('car.bmp');I=im2double(I);imshow(I)title('原图像')figure;plot(0:0.01:1,(0:0.01:1).^2)title('平方灰度变换函数')figure;J=I.^2;%平方变换imshow(J)title('灰度减小图像')减小灰度I=imread('car.bmp');增加灰度2552550输入灰度输出灰度G(x,y)=sqr(f(x,y))0<f(x,y)<1增加灰度2552550输入灰度输出灰度G(x,y)=sqr(增加灰度I=imread('car.bmp');I=im2double(I);imshow(I)title('原图像')figure;plot(0:0.01:1,sqrt(0:0.01:1))title('平方根灰度变换函数')figure;J=sqrt(I);%平方根变换imshow(J)title('灰度增加图像')增加灰度I=imread('car.bmp');4.4图像平滑
图像的平滑作用主要是为了去除图像中称为噪声的干扰信息。噪声妨碍人们感觉器官对所接收的信源信息理解的因素4.4图像平滑图像的平滑作用主要是为了去4.4.1图像噪声分类
为了分析处理方便,将乘性噪声近似认为加性噪声,而且假定信号和噪声是互相独立的。外部噪声:仪器造成的(课本P56)内部噪声:景物本身造成的统计特性平稳噪声非平稳噪声噪声和信号之间的关系加性噪声乘性噪声4.4.1图像噪声分类为了分析处理方4.4.2模板操作和卷积运算
将原图中的一个像素的灰度值和它周围邻近8个像素的灰度值相加,然后将求得的平均值作为新图像中该像素的灰度值。模板(Template)将要处理的元素4.4.2模板操作和卷积运算将原图中的一4.4.3邻域平均法利用Box模板(模板中所有系数都取相同值)对图像进行模板操作(卷积运算)的图像平滑方法。4.4.3邻域平均法(1+2+1+1+2+2+5+7+6)/9=3(2+1+4+2+2+3+7+6+8)/9=4(1+4+3+2+3+4+6+8+9)/9=4(1+2+2+5+7+6+5+7+6)/9=4(2+2+3+7+6+8+7+6+8)/9=5(2+3+4+6+8+9+6+8+8)/9=6(5+7+6+5+7+6+5+6+7)/9=6(7+6+8+7+6+8+6+7+8)/9=7(6+8+9+6+8+8+7+8+9)/9=812143122345768957688567891*1*1*1*1*1*1*1*1*34445768612143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*12143122345768957688567891*1*1*1*1*1*1*1*1*4.4.3邻域平均法(1+2+1+1+2+2+5+7+6)/9=3(2+1+邻域平均法的数学含义可用下式表示:
式中:x,y=0,1,…,N-1;
S是以(x,y)为中心的邻域的集合,M是S内的点数。其主要优点是算法简单,计算速度快,但会造成图像一定程度上的模糊。4.4.3邻域平均法邻域平均法的数学含义可用下式表示:式中:x,y=Box模板邻域平均法程序演示4.4.3邻域平均法Box模板邻域平均法程序演示4.4.3邻域平均法Box模板邻域平均法(不加噪声)Box模板邻域平均法(不加噪声)Box模板邻域平均法(添加椒盐噪声)Box模板邻域平均法(添加椒盐噪声)
高斯模板邻域平均法程序演示4.4.3邻域平均法高斯模板邻域平均法程序演示4.4.3邻域平均法
高斯模板邻域平均法(不加噪声)高斯模板邻域平均法(不加噪声)
高斯模板邻域平均法(添加椒盐噪声)高斯模板邻域平均法(添加椒盐噪声)4.4.4中值滤波
1.中值滤波原理中值滤波就是用一个奇数点的移动窗口,将窗口中心点的值用窗口内各点的中值代替。假设窗口内有五点,其值为80、90、200、110和120,那么此窗口内各点的中值即为110。(按照从大到小的顺序重新排列取中间数的数值)
中值滤波既能去除图像中的噪声,又能保持图像中一些物体的边缘。4.4.4中值滤波1.中值滤波原理中值滤111555111555111555111555111155551111111155051115555111555511105551115555用3*3方形窗中值滤波1,1,1,1,1,1,1,1,10,5,5,5,5,5,5,5,5?1115551115551115551115551111554.4.4中值滤波
中值滤波法程序演示4.4.4中值滤波中值滤波法程序演示中值滤波(不加噪声)请同学们自己练习一下添加噪声后的中值滤波程序编写
中值滤波(不加噪声)请同学们自己练习一下添加噪声后的中值滤波4.5图像锐化4.5.1微分法1.梯度法对于图像函数f(i,j),它在点(i,j)处的梯度是一个矢量,定义为4.5图像锐化4.5.1微分法1.梯度
梯度的两个重要性质(1)梯度的方向在函数f(i,j)最大变化率的方向上。(2)梯度的幅度用G[f(i,j)]表示,并由下式算出:梯度的两个重要性质对于数字图像而言,可近似为1.梯度法对于数字图像而言,可近似为1.梯度法第一种:各点的灰度g(x,
y)等于该点的梯度幅度g(x,y)=G[f(x,y)] 梯度法仅仅使用了像素点本身与其右侧和下方像素点之间的变化关系,因此,增强的图像仅显示灰度变化比较陡的边缘轮廓,而灰度变化平缓的区域则呈黑色。1.梯度法第一种:各点的灰度g(x,y)等于该点的梯度幅度1.梯度[I,map]=imread('lena.bmp');imshow(I,map);I=double(I);[Gx,Gy]=gradient(I);%计算梯度G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J1=G;figure,imshow(J1,map);%第一种图像增强Matlab程序map每一行分别代表R、G、B,涵盖了图像中出现的所有颜色组合。数据矩阵I的值指向map的某一行。[I,map]=imread('lena.bmp');Ma运行结果运行结果第二种:增强的图像使
式中:T是一个非负的阈值,适当选取T,即可使明显的边缘轮廓得到突出,又不会破坏原灰度变化比较平缓的背景。第二种:增强的图像使式中:T是一个非负的阈值,适当[I,map]=imread('lena.bmp');imshow(I,map);I=double(I);[Gx,Gy]=gradient(I);%计算梯度G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J2=I;%第二种图像增强K=find(G>=50);%可通过修改阈值实现不同锐化效果
J2(K)=G(K);figure,imshow(J2,map);Matlab程序[I,map]=imread('lena.bmp');Ma运行结果不同阈值下的锐化效果图(T=7、50)运行结果不同阈值下的锐化效果图(T=7、50)第三种:
式中:T是根据需要指定的一个灰度级,它将明显边缘用一固定的灰度级LG来实现。第三种:式中:T是根据需要指定的一个灰度级,它将明[I,map]=imread('lena.bmp');imshow(I,map);I=double(I);[Gx,Gy]=gradient(I);%计算梯度G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J3=I;%第三种图像增强K=find(G>=50);J3(K)=255;figure,imshow(J3,map);Matlab程序[I,map]=imread('lena.bmp');Ma运行结果不同阈值下的锐化效果图(T=7、50)运行结果不同阈值下的锐化效果图(T=7、50)第四种:
此法将背景用一个固定灰度级LG来实现,便于研究边缘灰度的变化。第四种:此法将背景用一个固定灰度级LG来实现,便于研[I,map]=imread('lena.bmp');imshow(I,map);I=double(I);[Gx,Gy]=gradient(I);%计算梯度G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J4=I;%第四种图像增强K=find(G<50);J4(K)=255;figure,imshow(J4,map);Matlab程序[I,map]=imread('lena.bmp');Ma运行结果不同阈值下的锐化效果图(T=7、50)运行结果不同阈值下的锐化效果图(T=7、50)第五种:
此法将背景和边缘用二值图像表示,便于研究边缘所在位置。第五种:此法将背景和边缘用二值图像表示,便于研究边缘所Matlab程序[I,map]=imread('lena.bmp');imshow(I,map);I=double(I);[Gx,Gy]=gradient(I);%计算梯度G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J5=I;%第五种图像增强K=find(G<=50);J5(K)=0;Q=find(G>=50);J5(Q)=255;figure,imshow(J5,map);Matlab程序[I,map]=imread('lena.b运行结果不同阈值下的锐化效果图(T=7、50)运行结果不同阈值下的锐化效果图(T=7、50)
2.Sobel算子
-101-202-101-1-2-1000121SxSy可用g=|Sx|+|Sy|来代替2.Sobel算子-101Sobel算子不像普通梯度算子那样用两个像素的差值,这就导致了以下两个优点:(1)由于引入了平均因素,因而对图像中的随机噪声有一定的平滑作用。(2)由于它是相隔两行或两列之差分,故边缘两侧元素得到了增强,边缘显得粗而亮。
2.Sobel算子
Sobel算子不像普通梯度算子那样用两个像素的差值,Matlab程序I=imread('lena.bmp');subplot(1,2,1),imshow(I);title('原灰度图');I=double(I);h=fspecial('sobel');J1=filter2(h,I);J=I-J1;subplot(1,2,2),imshow(J);title('sobel算子边缘锐化后')如果是彩色图像,添加一条灰度变换函数
I=imread('花朵.jpg');
I=rgb2gray(I);Matlab程序I=imread('lena.bmp'运行结果运行结果4.5.2拉普拉斯运算拉普拉斯算子为
锐化后的图像g为
式中:f、g分别为锐化前后的图像,k为与扩散效应有关的系数。k的选择要合理,太大会使图像中的轮廓边缘产生过冲;k太小,锐化不明显。4.5.2拉普拉斯运算锐化后的图像g为4.5.2拉普拉斯运算4.5.2拉普拉斯运算当k=1时,拉普拉斯锐化后的图像为4.5.2拉普拉斯运算当k=1时,拉普拉斯锐化后的图像为4.5.2拉普拉斯运算I=imread('lena.bmp');subplot(1,2,1),imshow(I);title('原灰度图');I=double(I);h=fspecial('log');%拉普拉斯算子J1=filter2(h,I);J=I-J1;subplot(1,2,2),imshow(J);title('拉普拉斯算子边缘锐化后')Matlab程序I=imread('lena.bmp');Matlab程序运行结果运行结果4.6图像分割4.6.1概述图像分割是将图像划分成若干个互不相交的小区域过程,小区域是某种意义下具有共同属性的像素的连通集合。连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。4.6图像分割4.6.1概述4.6.2灰度阈值法分割把图像灰度分成不同的等级,然后用设置灰度阈值的方法确定有意义的区域或分割物体的边界。常用的阈值化处理就是图像的二值化处理,选择一阈值,将图像转换为黑白二值图像。图像阈值化处理的变换函数表达式为4.6.2灰度阈值法分割
阈值变换曲线4.6.2灰度阈值法分割阈值变换曲线4.6.2灰度阈值法分割
阈值的选取非常重要。阈值过大,会提取多余的部分;而阈值过小,又会丢失所需的部分。
(a)(b)(c)(d)4.6.2灰度阈值法分割阈值的选取非常重要。阈值过大,会提取多余的部分;而clc;
clear;
G=imread('lena.bmp');%读入图像
figure(1);
imshow(G);%显示源图像
g=uint8(G);
h=imhist(g,256)%灰度直方图
n=numel(g);%计算像素值
p=h/n;%计算阈值
th=0;
fori=1:256
th=th+p(i)*(i-1);
end
th%显示阈值
figure(2);
imshow(im2bw(g,th/255));%显示处理后的图像clc;
clear;
G=imread('lena.b*4.6.3区域生长把一幅图像划分成满足某种判据的区域。
假定区域的数目以及在每个区域中单个点的位置已知,则从一个已知点开始,加上与已知点相似的邻近点形成一个区域。相似性准则:灰度级、彩色、组织、梯度或其他特性。*4.6.3区域生长假定区域的数目以及在每个如相似性准则:邻近点的灰度级与物体的平均灰度级的差小于2887731326541333543282251798445685521(9+8+8+8)/4=8.25*4.6.3区域生长如相似性准则:邻近点的灰度级与物体的平均灰度级的差小于288887731326541233543282251798445685521(9+8+8+8+7)/5=8
7*
4.6.3区域生长887731326
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论