《实验五图像阈值化》word版Word文档格式.docx
《《实验五图像阈值化》word版Word文档格式.docx》由会员分享,可在线阅读,更多相关《《实验五图像阈值化》word版Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
2.实验内容
1)加载原始图片,并在液晶屏幕上显示;
2)生成16阶灰值直方图,并在液晶屏幕上显示;
3)手工设置二值化阈值,生成阈值化图片,并在液晶屏幕上显示(三组数据);
4)设计自适应阈值计算程序,生成阈值化图片,并在液晶屏幕上显示;
5)将各步骤生成结果图片以PGM格式保存到磁盘文件中。
3.实验环境
(1)预装开发环境CrossCoreEmbeddedStudio1.0.2的计算机;
(2)BF609开发板一套;
(3)AZURE-BF609开发板上带有一片BF609DSP和一个4.3寸480*272点阵24bit的真彩液晶屏,本实验主要利用BF609的PVP模块进行图像阈值化的处理,并在液晶屏上显示处理前后的结果。
(4)ADDSHPUSB-ICE仿真器一套。
4.实验原理
(1)图像二值化
图像二值化是图像处理的基本技术,也是图像处理中一个非常活跃的分支,其应用领域非常广泛,特别是在图像信息压缩、边缘提取和形状分析等方面起着重要作用,成为其处理过程中的一个基本手段。
二值化的目的是将上步的图像增强结果转换成二值图像,从而能得到清晰的边缘轮廓线,更好地为边缘提取、图像分割、目标识别等后续处理服务。
选取合适的分割阈值可以说是图像二值化的重要步骤,过高的阈值会导致一些真实边缘的丢失,过低的阈值又会产生一些无谓的虚假边缘。
在一些简单的图像中,物体的灰度分布比较有规律,背景与各个目标在图像的直方图各自形成一个波峰,即区域与波峰一一对应,每两个波峰之间形成一个波谷。
那么,选择双峰之间的波谷所代表的灰度值T作为阈值,即可实现两个区域的分割。
式中f(x,y)为灰度图像的灰度值,T为阈值,g(x,y)为二值化后的灰度图像。
(2)BF609PVP数据处理流水线
BF609带有一个流水线视觉处理器(PVP),PVP提供了12个高性能的信号处理模块,这些模块可以灵活的组合形成流数据处理流水线,从而可以进行典型的视频和图像处理及分析内核(例如自动驾驶辅助系统)。
PVP针对卷积运算、基于小波的目标检测、分类、跟踪及检验算法进行了专门优化。
PVP集成了用于高速2D数字信号处理的一系列信号处理块。
PVP的主要模块:
a)IPF0~1:
格式化输入接口,接收输入到PVP模块的视频数据,其中IPF0的数据来自于视频子系统,如摄像头。
IPF1的数据接收存储器的数据,来自于DMA通道。
其主要功能包括:
格式化输入数据、提取色度或亮度单元、加窗、分离奇偶像素、帧计数等。
b)OPF0~3:
格式化输出接口,其中0~2用于视频子系统管道,而3用于存储器管道。
c)THC0~1:
阈值直方图压缩
d)CNV0~3:
卷积,可以执行5x5的二维卷积运算
e)PMA:
极坐标幅值与角度计算
f)ACU:
算术运算单元,提供32位的加减乘除运算
g)PEC:
图像边缘检测,可实现一阶导数和二阶导数的图像边缘检测
h)IIM0~1:
图像块积分
i)UDS:
图像缩放
大多数的信号处理块针对2D视频分析进行了优化,也可以用于一些通用的目的。
另外一些信号处理块具有一些通用功能,可以用于视频处理以外的多种应用。
图像阈值化PVP的模块连接为:
5.实验步骤
(1)导入实验项目
i.建立工作目录,如E:
\MyWorkspace
ii.打开CCES,在工作区选择对话框上输入工作区目录:
点击OK,如果工作区存在,则CCES会打开工作区,否则建立新工作区。
iii.将实验项目文件夹PVPDemo拷贝到工作区文件夹E:
iv.在CCES中点击FileImport导入项目,导入对话框中选择GeneralExistingProjectsintoWorkspace
v.点击Next,在选择根目录时选择刚才拷贝的项目文件夹E:
\MyWorkspace\PVPDemo,此时Project列表框中会出现可以被导入的项目PVPDemo(E:
\MyWorkspace\PVPDemo),勾中项目前面的复选框。
vi.点Finish,完成项目导入。
(2)程序设计
设计程序流程如下:
(1)初始化设备,装载原图;
(2)进入while循环,每按一次key10键,处理过程前进一步;
(3)第一步,显示原图;
(4)第二步,计算和显示直方图,保存直方图图片;
(5)第三步,阈值化和显示阈值化后的图像,保存阈值化图片;
(6)循环执行(3)~(5)。
(3)参数设置
(a)设置如下三组阈值,进行三次实验:
MIN_THRESHOLD
MIN_VALUE
MAX_THRESHOLD
MAX_VALUE
第一组
0x7d
0x00
0xff
第二组
0x50
第三组
0xA0
观察直方图中各灰度值的分布情况,分析处理结果优劣的原因。
(b)自适应阈值设置
编写Calculate_Threshold()函数,实现双峰法阈值算法,实现自适应阈值设置;
(4)编译、调试程序、查看结果
1.选择处理器型号:
ADSP-BF609
2.选择连接类型:
Emulator
3.选择平台:
ADSP-BF609viaHPUSB-ICE
4.确定后进入EditLaunchconfigurationproperties对话框
vii.选择新建的配置Azure_dmeoDebug,在Program(s)toload列表中为Device0的Core0选择调试时加载的DSP程序。
及编译生成的可执行二进制文件。
该文件为:
E:
\MyWorkspace\PVPDemo\project\Debug\Azure_dmeo.dxe
viii.点击Apply,再点击Debug开始加载DSP程序,进入调试模式
ix.运行程序,观察结果
x.查看E:
\MyWorkspace\PVPDemo\img下的输出文件output.pgm
b)保存输出结果,对比实验结果。
6.程序设计
自适应算法程序:
intcalculate_threshold()
{
intT;
inti,a=THC_HISTOGRAM_16[0],b=THC_HISTOGRAM_16[7];
for(i=1;
i<
6;
i++)
{
if(THC_HISTOGRAM_16[i]>
a)
a=i;
}
for(i=8;
16;
if(THC_HISTOGRAM_16[i]>
b)
b=i;
T=(a+b)/2*16;
printf("
T=%d\n"
T);
returnT;
}
7.实验数据及结果分析
原图
手动阈值1
#defineMIN_THRESHOLD0x7d
#defineMIN_VALUE0x00
#defineMAX_THRESHOLD0x7d
#defineMAX_VALUE0xff
手动阈值2
#defineMIN_THRESHOLD0x50
#defineMAX_THRESHOLD0x50
手动阈值3
#defineMIN_THRESHOLD0xA0
#defineMAX_THRESHOLD0xA0
#defineMAX_VALUE0xFF
自适应
此时分界线T=128
8.总结及心得体会
通过本次实验进一步掌握了BF609开发平台的使用以及CCES的调试方法。
通过对图像的阈值化处理,我了解了图像的直方图计算,阈值化的方法和意义。
通过手动改变参数和了解了参数对结果的影响。
通过直方图设计自适应处理程序,实现对图像的自适应处理。
通过这5次实验,让我对BF609这一系列的DSP有了初步的认识,为今后进一步深入的开发学习打下了良好的基础。
9.对本实验过程及方法、手段的改进建议
本次设计的自适应程序很有局限性,对于过亮或者过暗的图像不具有普遍适应性。
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)