计算机图形学课程设计基本图像处理功能软件包的设计.doc

上传人:文库蛋蛋多 文档编号:4200574 上传时间:2023-04-09 格式:DOC 页数:19 大小:2.70MB
返回 下载 相关 举报
计算机图形学课程设计基本图像处理功能软件包的设计.doc_第1页
第1页 / 共19页
计算机图形学课程设计基本图像处理功能软件包的设计.doc_第2页
第2页 / 共19页
计算机图形学课程设计基本图像处理功能软件包的设计.doc_第3页
第3页 / 共19页
计算机图形学课程设计基本图像处理功能软件包的设计.doc_第4页
第4页 / 共19页
计算机图形学课程设计基本图像处理功能软件包的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机图形学课程设计基本图像处理功能软件包的设计.doc》由会员分享,可在线阅读,更多相关《计算机图形学课程设计基本图像处理功能软件包的设计.doc(19页珍藏版)》请在三一办公上搜索。

1、计算机图形学课程设计课题名称 : 基本图像处理功能软件包的设计专业: 信息与计算科学 姓名: 汪媛 20090810010113 组内成员: 左梦冰 赖婷婷 胡小燕 曹娟 汪丽丽 万李园 指导老师: 蒋先刚老师 时间: 2012年6月20日 目 录一、理论背景3二、课题目的3三、系统开发环境3四、经典边缘检测算法分析41、Roberts算子42、Krisch边缘检测算子53、 Sobel边缘算子和Prewitt边缘算子6五、图像处理几何变换算法分析71、矩形图像变三角形72、矩形图像变菱形83、矩形变为圆及半圆94、扩散效果10六、总结10七、参考文献10八、代码附录:111、Robert算子

2、112、Kirsch 算子113、GaussLaplace算子144、矩形变三角形155、矩形变圆156、矩形变菱形167、灰度化178、反色179、二值化腐蚀18计算机图形学课程设计报告一、理论背景图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。图像处理方法有光学方法和电子学方法。从20世纪60年代起随着电子计算机和计算技术的不断提高和普及,数字图像处理进入了高速发展时期,而数字图像处理就是利用数字计算机或其它的硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用性。图像处理在遥感技术,医学领域,安全领域,工业生产中有着广泛的应用,其中在医学应用中的超声、核磁共

3、振和CT等技术,安全领域的模式识别技术,工业中的无损检测技术尤其引人注目。计算机进行图像处理一般有两个目的:(1)产生更适合人观察和识别的图像。(2)希望能由计算机自动识别和理解图像。数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域的重要基础,图像处理和分析的第一步往往就是边缘检测。物体的边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的部分,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的分界处。图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。根据灰度变化的特点,图像边缘

4、可分为阶跃型、房顶型和凸缘型。二、课题目的本课题的目的是从理论上对几种经典的边缘检测算法(Roberts算子、Sobel算子、Prewitt算子、Krisch算子、高斯-拉普拉斯算子)进行分析,并用Delphi实现这些算法。最后,通过实例图像对不同边缘检测算法的效果进行分析,找出各种算法的适用范围。通过本课题的研究可以为以后进一步学习数字图像处理打好基础,提高学生的独立工作能力和编程能力。三、系统开发环境开发工具:delphi7操作系统:Microsoft Windows 7主界面:四、经典边缘检测算法分析1、Roberts算子 边缘,是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。图

5、像的边缘对应着图像灰度的不连续性。显然图像的边缘很少是从一个灰度跳到另一个灰度这样的理想状况。真实图像的边缘通常都具有有限的宽度呈现出陡峭的斜坡状。 边缘的锐利程度由图像灰度的梯度决定。梯度是一个向量,f指出灰度变化最快的方向和变化量。 (1)梯度大小由 (2)确定。而梯度方向则由 (3)确定。因此最简单的边缘检测算子是用图像的垂直和水平差分来逼近梯度算子: (4)因此当我们寻找边缘的时候,最简单的方法是对每一个像素计算出(4)的向量,然后求出它的绝对值。利用这种思想就得到了Roberts算子: (5)其中f(x,y)是具有整数像素坐标的输入图像。 处理前 处理后(Roberts算子)2、Kr

6、isch边缘检测算子根据前面对该算法的分析得到的方法在具体实现中我使用了Kirsch (LPSTR lpDIBBits, LONG lWidth, LONG lHeight)函数。算法实现分为以下几步:(1)(a)设置一个一维数组来保存第一个模板的模板参数,进行第一次模板操作并把得到的图像存在缓存1中。(b)重新设置模板参数,进行模板操作并把得到的图像存在缓存3中。(2)求两副缓存图像的最大值:(a)指向缓存图像1倒数第j行,第i个像素的指针 lpDst1 = (char *)lpNewDIBBits1 + lWidth * j + i; (b)指向缓存图像2倒数第j行,第i个像素的指针 lp

7、Dst2 = (char *)lpNewDIBBits2 + lWidth * j + i; (c)比较得到结果if(*lpDst2 *lpDst1) *lpDst1 = *lpDst2;(3)使用冒泡算法的思想其它的各个模板重复一、二的操作进行比较得到该像素点处理后的最大值为该点的输出值。(4)比较整幅图像的所有像素点。 处理前 处理后(Krisch算子)3、 Sobel边缘算子和Prewitt边缘算子 Roberts算子是直观的也是简单的,但是对噪声多的情况显然效果不好。实践中人们做了大量的实践,总结出了一些经验。 Prewitt和Sobel分别提出了一个算子,这就是Prewitt算子和S

8、obel算子。 Prewitt边缘检测算子使用两个有向算子(一个水平的,一个是垂直的,一般称为模板),每一个逼近一个偏导数: (Prewitt模板)如果我们用Prewitt算子检测图像 M 的边缘的话,我们可以先分别用水平算子和垂直算子对图像进行卷积,得到的是两个矩阵,在不考虑边界的情形下也是和原图像同样大小的 M1,M2,他们分别表示图像M中相同位置处的两个偏导数。然后把M1,M2 对应位置的两个数平方后相加得到一个新的矩阵G,G表示M中各个像素的灰度的梯度值(一个逼近)。然后就可以通过阀值处理得到边缘图像。Sobel算子和Prewitt算子的不同就在于使用的模板不一样: (Sobel模板)

9、这些模板是怎么来的呢? 我们假设图像的灰度满足下面这个关系: (1)则梯度是(,) 。 显然,当前像素 33 邻域内像素值为: (2)定义垂直算子和水平算子形如: (3)利用这两个模板对当前像素进行卷积,得到的方向导数为 : (4)因此当前像素处的梯度的大小为 : (5)显然要有: 2(2a+b)=1 (6) 如果我们取 a=b=1/6则得到的模板就是1/6乘Prewitt算子; 如果我们取a=1/8,b=1/4则得到的就是1/8乘Sobel算子。 处理前 处理后(sobel算子)五、图像处理几何变换算法分析1、矩形图像变三角形如下图所示: 在这里,我是令矩形的高与三角形的高相等,矩形的宽与三

10、角形的底边长相等。三角形是以它底边中点为坐标原点,以底边为X轴,方向向右,三角的高为Y轴,方向向上,建立坐标系。矩形是以它的左上角为坐标原点,以宽为X轴,方向向右,以高为Y轴,方向向下。从坐标原点对矩形进行一行一行的扫描,并且同时一行一行的移动给三角形,上图只画了两条扫描线以表示意。二者坐标变换关系如下:X=cos(i*pi/h)*j*w/(2h);Y=j;X,Y是三角形的坐标,i,j是矩形的坐标,w,h分别为矩形的宽与高。其它三种三角形类似分析,具体代码参见附录。 矩形(前) 三角形(后)2、矩形图像变菱形如下图所示: 矩形(前) 菱形(后)其实它的原理以矩形变三角形的差不多。矩形坐标同上,

11、菱形坐标是以它的中心为坐标原点,以左右对角线为X轴,方向向右,以上下对角线为Y轴,方向向上。扫描线方法同上,如上图所示的两条扫描线。二者坐标变换关系为:If jh/2 X=-cos(i*pi/h)*(h-j)*w/(2h);Y=j;X,Y为菱形坐标,其余参数表示同上。具体代码参见附录。3、矩形变为圆及半圆 如下图所示 矩形(前) 圆(后)这里以圆的直径为矩形的宽为例说明。矩形坐标同上,圆的坐标是圆心为坐标原点,以水平直径为X轴,方向向右。以垂直直径为Y轴,方向向上。扫描线如上图所示。二者坐标变换关系为:r=w/2X=cos(i*pi/w)*(-r)Y=cos(j*pi/h)* (-sqrt(r

12、*r-xx*xx)X,Y为圆的坐标,其余参数同上。半圆的坐标变换差不多,只是在把Y变为Y= cos(j*pi/2h)* (-sqrt(r*r-xx*xx)即可,X变换与圆一样。具体代码参见附录。4、扩散效果扩散的原理:由于不在边缘的像素点周围都有8个像素点,加上自己共9个像素点,采用随机数产生1-9之间的数,若为1-8就把该像素点代替自己,若为9就不做处理。六、总结本课题从理论上对几种经典的边缘检测算法(Roberts算子、Sobel算子、Prewitt算子、Krisch算子、高斯-拉普拉斯算子)以及几何图形变换的算法(矩形变三角形、矩形变菱形、矩形变圆、矩形变半圆等)进行分析,并用Delph

13、i实现这些算法。最后,通过实例图像对不同边缘检测算法的效果进行分析,找出各种算法的适用范围。通过本课题的研究拓宽了自己的知识面,为以后进一步学习数字图像处理打下了基础,提高了学生的独立工作能力和编程能力。七、参考文献1.王爱民,赵忠旭,沈兰芬. 基于矢量Prewitt算子的多尺度彩色图像边缘检测方法.中国图像图形学报. 第4卷(A版),第12期1999年12月2.吕俊白. 基于快速Kirsch与边缘点概率分析的边缘提取. 计算机应用. 第21卷2001年2月3.吕俊白. 基于Laplacian算子的一种新的边缘检测方法. 小型微型计算机系统. 第23卷,第9期2002年9月4.王卜堂,杨善林.

14、 基于GaussLaplace算子的灰度图像边缘检测 计算机工程与应用. 2003年2月八、代码附录:1、Robert算子procedure TImageProcessForm.RobertClick(Sender: TObject);var/Robert边缘检测程序 x,y:integer; P,p1,p2:pbytearray;begin TestBMP.Assign(WillbeChangedBmp); ProcessedBmp.Assign(WillbeChangedBmp); for y:=0 to TestBMP.Height-2 do begin p:=ProcessedBmp.

15、ScanLiney; p1:=TestBMP.ScanLiney; p2:=TestBMP.ScanLiney+1; for x:=0 to TestBMP.Width-2 do begin p3*x:=max(0,max(-p13*(x+1)+p23*x, p13*x-p23*(x+1); p3*x+1:=max(0,max(-p13*(x+1)+1+p23*x+1, p13*x+1-p23*(x+1)+1); p3*x+2:=max(0,max(-p13*(x+1)+2+p23*x+2, p13*x+2-p23*(x+1)+2); end; end; ChangedBmp.Assign(P

16、rocessedBmp); ShowChangedBmp;end;2、Kirsch 算子procedure TImageProcessForm.KirschClick(Sender: TObject);var pu,pm,pd ,p1,p2,p3,p4,p5,p6,p7,p8,p:pbytearray; x,y:integer;begin TestBMP.Assign(WillbeChangedBmp); ProcessedBmp.Assign(WillbeChangedBmp);for y:=1 to TestBMP.Height-2 dobegin p:= ProcessedBmp.Sca

17、nLiney; p1:= ProcessedBmp.ScanLiney; p2:= ProcessedBmp.ScanLiney; p3:= ProcessedBmp.ScanLiney; p4:= ProcessedBmp.ScanLiney; p5:= ProcessedBmp.ScanLiney; p6:= ProcessedBmp.ScanLiney; p7:= ProcessedBmp.ScanLiney; p8:= ProcessedBmp.ScanLiney; pu:=TestBMP.ScanLiney-1; pm:=TestBMP.ScanLiney; pd:=TestBMP.

18、ScanLiney+1; for x:=1 to TestBMP.Width-2 do begin / 1 方向最大值 p1x*3:=min(255,max(0,(5*pu3*(x-1)+5*pu3*x+5*pu3*(x+1) -3*pm3*(x-1)-3*pm3*(x+1) -3*pd3*(x-1)-3*pu3*x-3*pd3*(x+1); p1x*3+1:=min(255,max(0,(5*pu3*(x-1)+1+5*pu3*x+1+5*pu3*(x+1)+1 -3*pm3*(x-1)+1-3*pm3*(x+1)+1 -3*pd3*(x-1)+1-3*pu3*x-3*pd3*(x+1)+1

19、); p1x*3+2:=min(255,max(0,(5*pu3*(x-1)+2+5*pu3*x+2+5*pu3*(x+1)+2 -3*pm3*(x-1)+2-3*pm3*(x+1)+2 -3*pd3*(x-1)+2-3*pu3*x-3*pd3*(x+1)+2); / 2 方向最大值 p1x*3:=min(255,max(0,(-3*pu3*(x-1)+5*pu3*x+5*pu3*(x+1) -3*pm3*(x-1)+5*pm3*(x+1) -3*pd3*(x-1)-3*pu3*x-3*pd3*(x+1); p1x*3+1:=min(255,max(0,(-3*pu3*(x-1)+1+5*pu

20、3*x+1+5*pu3*(x+1)+1 -3*pm3*(x-1)+1+5*pm3*(x+1)+1 -3*pd3*(x-1)+1-3*pu3*x-3*pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(-3*pu3*(x-1)+2+5*pu3*x+2+5*pu3*(x+1)+2 -3*pm3*(x-1)+2+5*pm3*(x+1)+2 -3*pd3*(x-1)+2-3*pu3*x-3*pd3*(x+1)+2); / 3 方向最大值 p1x*3:=min(255,max(0,(-3*pu3*(x-1)-3*pu3*x+5*pu3*(x+1) -3*pm3*(x-1)+5*p

21、m3*(x+1) -3*pd3*(x-1)-3*pu3*x+5*pd3*(x+1); p1x*3+1:=min(255,max(0,(-3*pu3*(x-1)+1-3*pu3*x+1+5*pu3*(x+1)+1 -3*pm3*(x-1)+1+5*pm3*(x+1)+1 -3*pd3*(x-1)+1-3*pu3*x+5*pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(-3*pu3*(x-1)+2-3*pu3*x+2+5*pu3*(x+1)+2 -3*pm3*(x-1)+2+5*pm3*(x+1)+2 -3*pd3*(x-1)+2-3*pu3*x+5*pd3*(x+1)

22、+2); / 4 方向最大值 p1x*3:=min(255,max(0,(-pu3*(x-1)-pu3*x-pu3*(x+1) +pd3*(x-1)+pu3*x+pd3*(x+1); p1x*3+1:=min(255,max(0,(-pu3*(x-1)+1-pu3*x+1-pu3*(x+1)+1 +pd3*(x-1)+1+pu3*x+pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(-pu3*(x-1)+2-pu3*x+2-pu3*(x+1)+2 +pd3*(x-1)+2+pu3*x+pd3*(x+1)+2); / 5 方向最大值 p1x*3:=min(255,max

23、(0,(-3*pu3*(x-1)-3*pu3*x-3*pu3*(x+1) -3*pm3*(x-1)-3*pm3*(x+1) +5*pd3*(x-1)+5*pu3*x+5*pd3*(x+1); p1x*3+1:=min(255,max(0,(-3*pu3*(x-1)+1-3*pu3*x+1-3*pu3*(x+1)+1 -3*pm3*(x-1)+1-3*pm3*(x+1)+1 +5*pd3*(x-1)+1+5*pu3*x+5*pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(-3*pu3*(x-1)+2-3*pu3*x+2-3*pu3*(x+1)+2 -3*pm3*(x-

24、1)+2-3*pm3*(x+1)+2 +5*pd3*(x-1)+2+5*pu3*x+5*pd3*(x+1)+2); /6 方向最大值 p1x*3:=min(255,max(0,(-3*pu3*(x-1)-3*pu3*x-3*pu3*(x+1) +5*pm3*(x-1)-3*pm3*(x+1) +5*pd3*(x-1)+5*pu3*x-3*pd3*(x+1); p1x*3+1:=min(255,max(0,(-3*pu3*(x-1)+1-3*pu3*x+1-3*pu3*(x+1)+1 +5*pm3*(x-1)+1-3*pm3*(x+1)+1 +5*pd3*(x-1)+1+5*pu3*x-3*pd

25、3*(x+1)+1); p1x*3+2:=min(255,max(0,(-3*pu3*(x-1)+2-3*pu3*x+2-3*pu3*(x+1)+2 +5*pm3*(x-1)+2-3*pm3*(x+1)+2 +5*pd3*(x-1)+2+5*pu3*x-3*pd3*(x+1)+2); / 7方向最大值 p1x*3:=min(255,max(0,(5*pu3*(x-1)-3*pu3*x-3*pu3*(x+1) +5*pm3*(x-1)-3*pm3*(x+1) +5*pd3*(x-1)-3*pu3*x-3*pd3*(x+1); p1x*3+1:=min(255,max(0,(5*pu3*(x-1)

26、+1-3*pu3*x+1-3*pu3*(x+1)+1 +5*pm3*(x-1)+1-3*pm3*(x+1)+1 +5*pd3*(x-1)+1-3*pu3*x-3*pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(5*pu3*(x-1)+2-3*pu3*x+2-3*pu3*(x+1)+2 +5*pm3*(x-1)+2-3*pm3*(x+1)+2 +5*pd3*(x-1)+2-3*pu3*x-3*pd3*(x+1)+2); / 8方向最大值 p1x*3:=min(255,max(0,(5*pu3*(x-1)+5*pu3*x-3*pu3*(x+1) +5*pm3*(x-1)

27、-3*pm3*(x+1) -3*pd3*(x-1)-3*pu3*x-3*pd3*(x+1); p1x*3+1:=min(255,max(0,(5*pu3*(x-1)+1+5*pu3*x+1-3*pu3*(x+1)+1 +5*pm3*(x-1)+1-3*pm3*(x+1)+1 -3*pd3*(x-1)+1-3*pu3*x-3*pd3*(x+1)+1); p1x*3+2:=min(255,max(0,(5*pu3*(x-1)+2+5*pu3*x+2-3*pu3*(x+1)+2 +5*pm3*(x-1)+2-3*pm3*(x+1)+2 -3*pd3*(x-1)+2-3*pu3*x-3*pd3*(x+

28、1)+2); px*3:=max(max(max(max(max(max(max(p13*x,p23*x),p33*x),p43*x),p53*x),p63*x),p73*x),p83*x); px*3+1:=max(max(max(max(max(max(max(p13*x+1,p23*x+1),p33*x+1),p43*x+1),p53*x+1),p63*x+1),p73*x+1),p83*x+1); px*3+2:=max(max(max(max(max(max(max(p13*x+2,p23*x+2),p33*x+2),p43*x+2),p53*x+2),p63*x+2),p73*x+

29、2),p83*x+2); end; end; ChangedBmp.Assign(ProcessedBmp); ShowChangedBmp;end;3、GaussLaplace算子procedure TImageProcessForm.GaussLaplaceClick(Sender: TObject);var p,p1,p2,p3,p4,p5:pbytearray ; x,y:integer ;begin TestBMP.Assign(WillbeChangedBmp); ProcessedBmp.Assign(WillbeChangedBmp);/temp.Assign(original

30、_image.Picture.Bitmap);/buffer.Assign(original_image.Picture.Bitmap);for y:=2 to TestBMP.Height-3 dobegin p:=ProcessedBmp.ScanLiney; p1:=TestBMP.ScanLiney-2; p2:=TestBMP.ScanLiney-1; p3:=TestBMP.ScanLiney; p4:=TestBMP.ScanLiney+1; p5:=TestBMP.ScanLiney+2; for x:=2 to TestBMP.Width-3 do begin px*3:=m

31、in(255,max(0,(-p13*x-p23*(x-1)-2*p23*x-p23*(x+1) -p33*(x-2)-2*p33*(x+1)+16*p33*x-2*p33*(x+1)-p33*(x+2) -p43*(x-1)-2*p43*x-p43*(x+1)-p53*x); px*3+1:=min(255,max(0,(-p13*x+1-p23*(x-1)+1-2*p23*x+1-p23*(x+1)+1 -p33*(x-2)+1-2*p33*(x+1)+1+16*p33*x+1-2*p33*(x+1)+1-p33*(x+2)+1 -p43*(x-1)-2*p43*x-p43*(x+1)-p

32、53*x); px*3+2:=min(255,max(0,(-p13*x+2-p23*(x-1)+2-2*p23*x+2-p23*(x+1)+2 -p33*(x-2)+2-2*p33*(x+1)+2+16*p33*x+2-2*p33*(x+1)+2-p33*(x+2)+2 -p43*(x-1)+2-2*p43*x+2-p43*(x+1)+2-p53*x+2); end;end; ChangedBmp.Assign(ProcessedBmp); ShowChangedBmp;end;4、矩形变三角形procedure TImageProcessForm.N11Click(Sender: TObj

33、ect); /矩形变三角形varu,v,x,y,w,h:Integer;angle,r,xx,yy:single;begin r:=image1.Width/2; image2.Visible:=true; image2.Height:=image1.Height; image2.Width:=image1.Width; w:=image1.Picture.Bitmap.Width; h:=image1.Picture.Bitmap.Height; for u:=0 to h-1 do begin for v:=0 to w-1 do begin angle:=(u*3.14159/w); x

34、x:=cos(angle)*v*w/(2*h); yy:=v; x:=Trunc(xx); y:=Trunc(yy); Image2.Canvas.PixelsTrunc(r)+x,y:=Image1.Canvas.Pixelsu,v; end; end;end;5、矩形变圆procedure TImageProcessForm.N21Click(Sender: TObject); /矩形变圆varu,v,x,y:Integer;angle1,angle2,r,xx,yy:single;begin image2.Height:=image1.Height; image2.Width:=imag

35、e1.Width; r:=image1.Width/3; for u:=0 to image1.Picture.Bitmap.Width-1 do begin for v:=0 to image1.Picture.Bitmap.Height-1 do begin angle1:=(u*3.14159/image1.Width); angle2:=(v*3.14159/image1.Height); xx:=cos(angle1)*(-r); yy:=cos(angle2)*(-sqrt(r*r-xx*xx); x:=Trunc(xx); y:=Trunc(yy); Image2.Canvas.

36、PixelsTrunc(r)+x,Trunc(r)+y:=Image1.Canvas.Pixelsu,v; end; end;end;6、矩形变菱形procedure TImageProcessForm.N3Click(Sender: TObject); /矩形变菱形varu,v,x,y,w,h:Integer;angle,r,xx,yy:single;begin image2.Visible:=true; image2.Height:=image1.Height; image2.Width:=image1.Width; r:=image1.Picture.Bitmap.Height/2; w

37、:=image1.Picture.Bitmap.Width; h:=image1.Picture.Bitmap.Height; for u:=0 to w-1 do begin for v:=0 to h-1 do begin angle:=(u*3.14159/w); if (vh/2) then xx:=cos(angle)*(-v*w/h) else xx:=cos(angle)*(-(h-v)*w/h); yy:=v; x:=Trunc(xx); y:=Trunc(yy); Image2.Canvas.Pixelsx+trunc(r),y:=Image1.Canvas.Pixelsu,

38、v; end; end;end;7、灰度化procedure TImageProcessForm.Gray1Click(Sender: TObject);var p: pbyteArray; Gray,x, y: Integer;begin TestBMP.Assign(WillbeChangedBmp); / WillbeChangedBmp赋予彩色图像 for y := 0 to TestBMP.Height - 1 do begin /获取每一行象素信息 p := TestBMP.scanliney; /扫描 for x := 0 to TestBMP.Width - 1 do begin /这里采用YUV与RGB颜色空间变换的方法,即 Y0.3R+0.59G+0.11B Gray := Round(p3 * x + 2 * 0.3 + p3 * x + 1 * 0.59 + p3 * x * 0.11); /

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号