系统实验(DSP)--图像的锐化处理、图像的边缘检测
dsp原理与应用实验报告总结

dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
数字图像处理实验报告(图像边缘检测)

实验报告实验名称实验三图像边缘检测课程名称数字图像处理某成绩班级学号日期地点备注:1、实验目的(1)了解并掌握使用微分算子进行图像边缘检测的基本原理;(2)编写程序使用Laplacian 算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质;(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果;(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2、实验环境(1)Windows XP/7(2)Matlab 7.1/7.143、实验方法本次实验要求对256×256大小,256级灰度的数字图像lena.img进行处理。
(1)对该图像进行锐化处理,要求采用Laplacian算子进行锐化,分α=1和α=2两种情况,按如下不同情况进行处理:①g1(m,n)=f(m,n)-α∇f②g2(m,n)=4αf(m,n)-α[f(m-1,n)+f(m+1,n)+f(m,n-1)+f(m,n+1)]I、要对图像进行处理,要先读取该图像,实验代码如下:close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);II、读取图像后,对该图像的每一像素(不考虑图像的边界部分)进行遍历,根据公式①(公式①相当于做差分)对每一灰度进行计算,将所得的结果存入一矩阵g1中(矩阵g1初始化为该图像的矩阵),代码如下(仅以ɑ=1为例):g1=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendIII、根据公式②对图像的每一个像素(不考虑图像的边界部分)进行计算,将所得之存入矩阵g2中(g2初始化值为该图像的矩阵值),具体方法与上一步类似,代码如下(仅以ɑ=1为例):g2=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endend(2)分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。
第6章 图像的锐化处理与边缘检测

0 1 0 H 3 1 5 1 0 1 0
1 1 1 H 4 1 9 1 1 1 1
39
1 1 1 H4 1 9 1 1 1 1
0 1 0 H3 1 5 1 0 1 0
1 0 1 H 2 0 2 1 0 1
12
垂直方向的一阶锐化 —— 例题
1 0 1 H 2 0 2 1 0 1
1 2 3 2
1*1+2*2+1*3-1*3-2*2-1*8=-7
1
0 0 0 0 0
0 -7 -16 -17 0
41
Wallis微分算子可以看作是校正了视觉的指 数特性后的Laplacian运算。 与拉普拉斯算子处理效果相比,拉普拉斯算 子对画面比较暗的部分的锐化比较弱,而 Wallis算子则不存在这个问题,整个画面的 锐化效果比较均衡。 Wallis算子对弱信息比拉普拉斯算子更敏感。
42
Wallis算子锐化结果
方法1:整体加一个正整数,以保证所有的像 素值均为正。 这样做的结果是:可以获得类似浮雕的效果。
0 0 0 0 0 -3 -6 1 0 -13 -13 12 0 -20 -13 5 0 0 0 0 20 20 20 20 17 14 20 7 7 20 0 7 20 20 20
20
20
21
20
32
20
图6. 2 图像细节的微分特性
6
图6.3给出几种典型灰度变化模式及其相应的微分变 化模式。 可见无论那种形式,通过一阶微分或者是二阶微分 都可以进行图像细节的增强与检测。
图6. 3 典型的灰度变化模式与其微分变化模式
图像锐化和边缘检测

图像锐化和边缘检测本文容构成:1、图像锐化和边缘检测的基本概念,微分梯度已经差分的定义2、锐化和边缘检测的像素处理方式(3种)3、单方向一阶微分锐化,包括:水平方向垂直方向Kirsch算子4、无方向微分锐化,包括:Roberts算子Sobel算子Prewitt算子Laplacian算子(二阶微分)LOG算子(二阶微分5、二阶微分6、实验结果对比在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。
一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。
这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。
为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。
图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。
微分运算是求信号的变化率,由傅立叶变换的微分性质可知,微分运算具有较强高频分量作用。
从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。
但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。
图像锐化的方法分为高通滤波和空域微分法。
图像的边缘或线条的细节(边缘)部分与图像频谱的高频分量相对应,因此采用高通滤波让高频分量顺利通过,并适当抑制中低频分量,是图像的细节变得清楚,实现图像的锐化,由于高通滤波我们在前面频域滤波已经讲过,所以这里主要讲空域的方法——微分法。
一阶微分运算一阶微分主要指梯度模运算,图像的梯度模值包含了边界及细节信息。
梯度模算子用于计算梯度模值,通常认为它是边界提取算子,具有极值性、位移不变性和旋转不变性。
系统实验(DSP)--图像的锐化处理、图像的边缘检测

系统实验(DSP)--图像的锐化处理、图像的边缘检测DSP 实验报告一、 图像的锐化处理(高通滤波处理)1、 实验原理处理模板如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--+--=004100αααααM 25.0=α对应数学表达式:()[])1,(),1()1,(),1(),(41),(++++-+--+=y x f y x f y x f y x f y x f y x g αα2、 C 程序及运行结果程序:Acute_RGB_Image(int *buffer){int x,y;for (y=0;y<ImageHeight;y++)for (x=0;x<ImageWidth;x++){buffer[y*ImageWidth+x]=2*buffer[y*ImageWidth+x]-(buffer[y*ImageWidth+x-1]+buffer[(y-1)*ImageWidth+x]+buffer[y*ImageWidth+x+1]+buffer[(y+1)*ImageWidth+x])/4;if(buffer[ImageWidth*y+x]>255)buffer[ImageWidth*y+x]=255;else if (buffer[ImageWidth*y+x]<0)buffer[ImageWidth*y+x]=0;}}运行结果:锐化前锐化后分析:从上面两幅图可以看出锐化后的图像轮廓变得明显,且噪声变得强烈。
3、汇编程序及运行结果程序:ImageAcuteSub(ImageWidth,ImageHeight,buffer_red);ImageAcuteSub(ImageWidth,ImageHeight,buffer_green);ImageAcuteSub(ImageWidth,ImageHeight,buffer_blue);.mmregs.def _ImageAcuteSub.text_ImageAcuteSub:mov t0,brc1 ;IMAGE WIDTHmov t1,brc0 ;IMAGE HEIGHTrptb y_looprptb x_loopmov *ar0(#1),ac1;f(x+1,y)add *ar0(#-1),ac1 ;f(x-1,y)add *ar0(#-250),ac1 ;f(x,y-1)add *ar0(#250),ac1 ;f(x,y+1)sfts ac1,#-2mov *ar0<<#1,ac0;2f(x,y)sub ac1,ac0bcc branch1,ac0<0sub #255,ac0,ac1bcc branch2,ac1>0mov ac0,*ar0+b x_loopbranch1: mov #0,*ar0+b x_loopbranch2: mov #255,*ar0+ x_loop: nopy_loop: nopRET运行结果:锐化前 锐化后分析:可以看出汇编的结果和C 程序的结果是一致的。
[整理]图像锐化和边缘提取
![[整理]图像锐化和边缘提取](https://img.taocdn.com/s3/m/45876d836aec0975f46527d3240c844769eaa08d.png)
字图像处理》实验报告2012年安徽省普通高校对口招收中等职业学校毕业考试语文试题(本卷满分150分,时间120分钟)一.语言文学知识与语言表达(共11小题,每小题3分,计33分)1.下列句子中加点字的注音,正确的一项是( )A.殷(yān)红的鲜血滴落在泥土上。
B.她梦想到盛(shèng)在名贵盘碟里的佳肴。
C.第二步工作叫掐丝,就是拿扁铜丝粘(nián)在铜胎表面上。
D.仿佛远处高楼上渺茫的歌声似(sì)的。
2.下列句子没有错别字的一项是( )A.得知我还必需回渡假村,她楞住了。
B.住宅的寒伧,墙壁的暗淡,家俱的破旧,衣料的粗陋,都使她苦恼。
C.归来时带着几份鹊跃的心情,一跳一跳就跳过了那些山坡。
D.丈夫从实验室回来时,孩子们已经做完功课睡觉了。
3.对下列词语中加点字的解释,不正确的一项是( )A.累世(累:连续)勤能补拙(拙:笨)B.睿智(睿:锋利)越俎代庖(庖:厨房)C.绵亘(亘:延续不断)扪心自问(扪:摸)D.自诩(诩:夸耀)自惭形秽(秽:丑陋)4.下列句子成语使用恰当的一项是( )A.贵族老爸们养尊处优的生活场所已消失得杳无音信。
B.过去有些园名,可以望文生义,如梅园,它的特色是梅。
C.在孩子们的眼神里,我看到了他们的心悦诚服。
D.赚钱是每一个生意人众望所归的事。
5.下列句子没有语病的一项是( )A.人脑是一部最奇妙的机器,但它能和平结合,使人成为万物之灵。
B.好的立意,来源于作者对社会生活的用心提炼、体验、思考和观察。
C.母亲在非解释一下不足以平服别人的时候才这样说。
D.人物的塑造,要经过摊牌打磨的过程,才能创造出鲜活的形象。
6.将下列句子组成语意连贯的一段文字,排序正确的一项是( )①当时我很年轻,而且正是不动扳机就感到手痒的时期。
②我察觉到,在这双眼睛里有某种新的东西,某种只有它和这座山才了解的东西。
③我总是认为,狼越少,鹿就越多,因此,没有狼的地方就意味着是猎人的天堂。
DSP技术实验报告-实验4边缘检测

电子科技大学电子工程学院标准实验报告(实验)课程名称 DSP技术实验题目边缘检测电子科技大学实验报告实验地点:KB453 实验时间:11月2日实验室名称: DSP技术实验室实验项目名称:边缘检测实验1.实验目的1)进一步掌握AZURE-BF609开发平台的使用;2)进一步掌握CCES调试方法;3)了解BF609 DSP在图像、视频处理领域的应用;4)了解边缘检测方法及意义;5)掌握利用PVP进行边缘检测的方法。
2.实验内容1)加载PGM格式的原始图片;2)在液晶屏幕上显示原始图片;3)对原始图片进行边缘检测处理;4)将边缘检测的结果在液晶屏幕上显示;5)将边缘检测的结果以PGM格式保存到文件;3.实验报告要求1)完成实验步骤中所要求的所有实验结果的记录,需要的记录均加粗标注。
2)分别列给出一阶导数检测模式和二阶导数检测模式的PVP模块连接图。
3)记录在两种模式下各个不同参数的检测结果。
4)总结:可以包括实验过程中出现的问题、实验内容以及实验还可以进一步改进的地方等;5)根据上述要求完成标准实验报告的撰写。
4.实验结果4.1 实验结果1)原始图片:c//下面粘贴图片2)一阶导数边缘检测检测原理:oThresholds={50,100,0,0 }oThresholds={100,200,0,0 } //下面粘贴图片oThresholds={200,400,0,0 } //下面粘贴图片oThresholds={1200,1400,0,0 } //下面粘贴图片3)二阶导数边缘检测检测原理:oThresholds={0,0,1,2 }oThresholds={0,0,3,4 }oThresholds={0,0,5,6 }oThresholds={0,0,7,8 }反色后的结果:叠加到原始图像:4.2 实验中增加或修改的源程序边缘提取代码(边缘用白色表示):int i;#ifdef PEC_FIRST_DERIVIATIVEfor(i=0;i<FRAME_HEIGHT;i++){for(j=0;j<FRAME_WIDTH;j++){if((PECOutBuf[i*FRAME_WIDTH+j]&0X7)>=PEC_EDGE_BITS)PECOutBuf[i*FRAME_WIDTH+j] = 0XFF;elsePECOutBuf[i*FRAME_WIDTH+j] = 0X0;}}#elsefor(i=0;i<FRAME_HEIGHT;i++){for(j=0;j<FRAME_WIDTH;j++){if((PECOutBuf[i*FRAME_WIDTH+j]&0XF)!=0 )PECOutBuf[i*FRAME_WIDTH+j] = 0XFF;elsePECOutBuf[i*FRAME_WIDTH+j] = 0X00;}}#endif}边缘提取代码(边缘用黑色表示):int i;#ifdef PEC_FIRST_DERIVIATIVEfor(i=0;i<FRAME_HEIGHT;i++){for(j=0;j<FRAME_WIDTH;j++){if((PECOutBuf[i*FRAME_WIDTH+j]&0X7)>=PEC_EDGE_BITS)PECOutBuf[i*FRAME_WIDTH+j] = 0X0;elsePECOutBuf[i*FRAME_WIDTH+j] = 0XFF;}}#elsefor(i=0;i<FRAME_HEIGHT;i++){for(j=0;j<FRAME_WIDTH;j++){if((PECOutBuf[i*FRAME_WIDTH+j]&0XF)!=0 )PECOutBuf[i*FRAME_WIDTH+j] = 0X0;elsePECOutBuf[i*FRAME_WIDTH+j] = 0XFF;}}#endif将黑色边缘叠加到淡化的原始图像的代码://代码•for(i=0;i<FRAME_HEIGHT;i++)•{• for(j=0;j<FRAME_WIDTH;j++)• {• if((PECOutBuf[i*FRAME_WIDTH+j]&0X7)>=PEC_EDGE_BITS)• PECOutBuf[i*FRAME_WIDTH+j] = 0XFF;• else• PECOutBuf[i*FRAME_WIDTH+j] = 0X0;• }•}•for(i=0;i<FRAME_HEIGHT;i++)• {• for(j=0;j<FRAME_WIDTH;j++)• {• if((PECOutBuf[i*FRAME_WIDTH+j]&0XF)!=0 )• PECOutBuf[i*FRAME_WIDTH+j] = 0XFF;• else• PECOutBuf[i*FRAME_WIDTH+j] = 0X00;• }•}•for(i = 0; i < PEC_OUT_BUF_SIZE; i++)•{• int temp_pix;• unsigned char temp_pix8;• temp_pix = pPECInBuf[i] * 3;• temp_pix8 = temp_pix > 255 ? 255 : temp_pix;•PECOutBuf[i] = PECOutBuf[i] == 0 ? PECOutBuf[i] : temp_pix8;•}5.总结在掌握了BF609开发板的基本使用之后,通过本次实验,进一步掌握了CCES的各种功能;同时在边缘检测试验中,再一次复习了边缘检测的原理和基本方法,了解了BF609系列DSP在数字图像处理领域的广泛应用,增加了对图像处理领域的学习热情,也了解了BF609中专为图像处理而设计的流水线视觉处理器PVP模块的强大功能,学会了利用PVP对图像进行处理的基本方法。
DSP技术实验指导书--实验五 边缘检测实验

实验五边缘检测实验1实验目的1.进一步掌握AZURE-BF609开发平台的使用;2.进一步掌握CCES调试方法;3.了解BF609 DSP在图像、视频处理领域的应用;4.了解边缘检测方法及意义;5.掌握利用PVP进行边缘检测的方法。
2实验前的准备工作1、仔细阅读实验指导书,确定实验的目的和要求。
3实验环境1.预装开发环境Cross Core Embedded Studio 1.0.2的计算机;2.BF609开发板一套;3.ADDS HPUSB-ICE仿真器一套。
4实验内容1、加载PGM格式的原始图片;2、在液晶屏幕上显示原始图片;3、对原始图片进行边缘检测处理;4、将边缘检测的结果在液晶屏幕上显示;5、将边缘检测的结果以PGM格式保存到文件;6、生成黑色边缘的边缘图像7、将黑色边缘叠加到淡化的原始图像上5学时数4学时6实验原理1.BF609 PVP简介BF609带有一个流水线视觉处理器(PVP),PVP提供了12个高性能的信号处理模块,这些模块可以灵活的组合形成流数据处理流水线,从而可以进行典型的视频和图像处理及分析内核(例如自动驾驶辅助系统)。
PVP针对卷积运算、基于小波的目标检测、分类、跟踪及检验算法进行了专门优化。
PVP集成了用于高速2D数字信号处理的一系列信号处理块。
PVP的主要模块:1)IPF0~1:格式化输入接口,接收输入到PVP模块的视频数据,其中IPF0的数据来自于视频子系统,如摄像头。
IPF1的数据接收存储器的数据,来自于DMA通道。
其主要功能包括:格式化输入数据、提取色度或亮度单元、加窗、分离奇偶像素、帧计数等。
2)OPF0~3:格式化输出接口,其中0~2用于视频子系统管道,而3用于存储器管道。
3)THC0~1:阈值直方图压缩4)CNV0~3:卷积,可以执行5x5的二维卷积运算5)PMA:极坐标幅值与角度计算6)ACU:算术运算单元,提供32位的加减乘除运算7)PEC:边缘检测,可实现一阶导数和二阶导数的边缘检测8)IIM0~1:图像块积分9)UDS:图像缩放大多数的信号处理块针对2D视频分析进行了优化,也可以用于一些通用的目的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP 实验报告
一、 图像的锐化处理(高通滤波处理)
1、 实验原理
处理模板如下:
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--+--=004100
ααα
ααM 25.0=α
对应数学表达式:
()[])1,(),1()1,(),1(),(41),(++++-+--+=y x f y x f y x f y x f y x f y x g αα
2、 C 程序及运行结果
程序:
Acute_RGB_Image(int *buffer)
{
int x,y;
for (y=0;y<ImageHeight;y++)
for (x=0;x<ImageWidth;x++)
{
buffer[y*ImageWidth+x]=2*buffer[y*ImageWidth+x]-(buffer[y*ImageWidth+x-1]+b uffer[(y-1)*ImageWidth+x]+buffer[y*ImageWidth+x+1]+buffer[(y+1)*ImageWidth+x])/4;
if(buffer[ImageWidth*y+x]>255)
buffer[ImageWidth*y+x]=255;
else if (buffer[ImageWidth*y+x]<0)
buffer[ImageWidth*y+x]=0;
}
}
运行结果:
锐化前锐化后
分析:从上面两幅图可以看出锐化后的图像轮廓变得明显,且噪声变得强烈。
3、汇编程序及运行结果
程序:
ImageAcuteSub(ImageWidth,ImageHeight,buffer_red);
ImageAcuteSub(ImageWidth,ImageHeight,buffer_green);
ImageAcuteSub(ImageWidth,ImageHeight,buffer_blue);
.mmregs
.def _ImageAcuteSub
.text
_ImageAcuteSub:
mov t0,brc1 ;IMAGE WIDTH
mov t1,brc0 ;IMAGE HEIGHT
rptb y_loop
rptb x_loop
mov *ar0(#1),ac1;f(x+1,y)
add *ar0(#-1),ac1 ;f(x-1,y)
add *ar0(#-250),ac1 ;f(x,y-1)
add *ar0(#250),ac1 ;f(x,y+1)
sfts ac1,#-2
mov *ar0<<#1,ac0;2f(x,y)
sub ac1,ac0
bcc branch1,ac0<0
sub #255,ac0,ac1
bcc branch2,ac1>0
mov ac0,*ar0+
b x_loop
branch1: mov #0,*ar0+
b x_loop
branch2: mov #255,*ar0+
x_loop: nop
y_loop: nop
RET
运行结果:
锐化前 锐化后
分析:可以看出汇编的结果和C 程序的结果是一致的。
二、 图像的边缘检测
1、 实验原理
方向方向和y x 的梯度分别为: ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=∆10110110131x f ⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡---=∆11100011131y f 总梯度幅度
y
x f f f ∆+∆=∆[]13||(1
,1)(1,)(1,1)(1,1)(1,)(1,1)x f f x y f x y f x y f x y f x y f x y ∆=+-+++++-------+[])1,1()1,()1,1()1,1()1,()1,1(||3
1
++-+-+---++-+--=∆y x f y x f y x f y x f y x f y x f f y ⎩⎨⎧≥∆=else T f if y x g 01),(
实验中的阈值设为120。
2、 C 程序及运行结果
程序:
Edge_Grey_Image()
{
int x,y;
int delta_x,delta_y;
for (y=0;y<ImageHeight;y++)
for (x=0;x<ImageWidth;x++)
{
delta_x=abs(buffer_grey[ImageWidth*(y-1)+x+1]+buffer_grey[ImageWidth*y+x +1]+buffer_grey[ImageWidth*(y+1)+x+1]-buffer_grey[ImageWidth*(y-1)+x-1]-b uffer_grey[ImageWidth*y+x-1]-buffer_grey[ImageWidth*(y+1)+x-1])/3;
delta_y=abs(buffer_grey[ImageWidth*(y-1)+x-1]+buffer_grey[ImageWidth*(y-1)+x]+buffer_grey[ImageWidth*(y-1)+x+1]-buffer_grey[ImageWidth*(y+1)+x-1]-buffer_grey[ImageWidth*(y+1)+x]-buffer_grey[ImageWidth*(y+1)+x+1])/3;
if((delta_x+delta_y)>=Threshhold)
buffer_org[ImageWidth*y+x]=255;
else buffer_org[ImageWidth*y+x]=0;
}
}
运行结果:
边缘处理前边缘处理后
分析:从上面两幅图可以看出,原图像的边缘经过处理后可以很好的用白线来勾勒出,没有边缘的地方都用黑色表示,可以很清楚的从处理后的图片看出斑马的形状。
3、汇编程序及运行结果
程序:
ImageEdgeSub(ImageWidth,ImageHeight,buffer_org);
.mmregs
.def _ImageEdgeSub
.bss TEMP,1
.text
_ImageEdgeSub:
mov t0,BRC1
mov t1,BRC0
mov xar0,ac3
mov #256<<#11,ac2
mov ac2,xar1
RPTB Y_LOOP
RPTB X_LOOP
mov *ar0+,*ar1+;将ar0的内容复制到ar1里面
X_LOOP: nop
Y_LOOP: nop
mov t0,brc1 ;IMAGE WIDTH
mov t1,brc0 ;IMAGE HEIGHT
mov ac2,xar1
mov ac3,xar0
rptb y_loop
rptb x_loop
mov *ar1+,ac0
mov *ar1(#-149),ac0;f(x+1,y-1)
add *ar1(#1),ac0 ;f(x+1,y)
add *ar1(#151),ac0 ;f(x+1,y+1)
sub *ar1(#-151),ac0;f(x-1,y-1)
sub *ar1(#-1),ac0 ;f(x-1,y)
sub *ar1(#149),ac0;f(x-1,y+1)
abs ac0
mov *ar1(#-151),ac1 ;f(x-1,y-1)
add *ar1(#-150),ac1 ;f(x,y-1)
add *ar1(#-149),ac1 ;f(x+1,y-1)
sub *ar1(#149),ac1 ;f(x-1,y+1)
sub *ar1(#150),ac1 ;f(x,y+1)
sub *ar1(#151),ac1 ;f(x+1,y+1)
abs ac1
add ac1,ac0
call DIVION
sub #120,ac0,ac0
bcc branch1,ac0>0
mov #0,*ar0+
b x_loop
branch1: mov #255,*ar0+
x_loop: nop
y_loop: nop
RET
DIVION:
amov #080000h,XAR7
mov #3,*ar7
mov #16,t0
mov ac0,ac1
branch2: subc *ar7,ac1,ac2
mov ac2,ac1
sub #1,t0
bcc branch2,t0>0
mov ac1,t1
mov t1,ac0
RET
运行结果:
边缘处理前边缘处理后
分析:可以看出汇编的结果和C程序的结果是一致的。