西门子模块6ES7516-3UN00-0AB0安装调试
1 引言
分水岭算法具有准确分割、可以得到封闭的轮廓线、能够**定位图像边缘的特点,在图像分割中得到广泛应用[1,2,3]。但是,由于分水岭算法对微弱边缘具有良好的响应,对复杂的超声图像进行分割时,往往会产生过分割的现象。针对这个问题,近年来提出了许多解决方法[4],主要思路有两种:一种是图像前处理,即在图像分割前先对目标进行标记,标记方法可以是基于不相交集[5],也可以是利用形态学极小值标定[6]。基于标记的方法分割结果准确,速度快,但分割效果的好坏依赖于标记的提取,需要大量的领域知识;另一种是图像后处理,即对分割后的结果通过一定的合并准则进行相邻区域的合并。fan等提出的基于颜色信息的彩色图像自动分割算法[7],利用图像颜色信息进行分水岭分割,然后用区域生长的算法进行区域合并,但是在分割中仅仅考虑了图像的颜色信息,产生了较多错误的边界。
本文综合考虑彩色图像色度信息、边缘信息和区域邻接关系,提出了一种改进的分水岭分割算法。与以往的分水岭算法比较,改进算法定义了新的判断区域邻接关系的准则,而且,将边缘信息加入到合并准则中,使得分割结果更加合理。
2 分水岭算法
分水岭算法是一种基于边缘的分割算法[8],通过确定分水岭的位置而进行图像分割的,根据确定的分水岭位置,能够将图像用一组各自封闭的曲线分割成不同的区域。其基本思想是将图像看成是地形表面,设想在每一个区域极小值(低谷)处开一个小孔,将地形表面沉浸在水中。水从海拔低的低谷向上不断增高,当两个集水盆地将要交汇,就在要交汇处建起高达高表面高程的堤坝,此处堤坝就是分开盆地的分水岭线(如图1)。重复以上过程直到整个图像浸入水中,由分水岭所围合的区域就是分割区域。
图1 分水岭形成过程
分水岭算法是医学图像分割中一个常用的工具,但是,对图像的灰度变化特别敏感,容易将有噪声引起的局部大值作为分水岭,造成过分割现象。
3 改进算法
相关研究表明,融合多种信息更有利于取得合理的分割效果[10]。本文算法是在luv颜色空间中进行的,更适合人眼的识别。针对彩色图像分割和分水岭算法的特点,我们提出了一种进行抑制彩色图像过分割的改进方法。算法主要思想是考虑彩色图像色度信息、边缘信息和区域邻接关系,利用这三个方面的信息,对经过分水岭分割后的超声图像进行区域合并。改进算法由分水岭分割,相似区域合并,边界提取三个部分组成,其中,相似区域合并是改进的重点部分。
3.1 相似区域合并
本文综合考虑区域颜色信息,边缘信息和区域邻接关系对过分割区域进行相似区域合并。相似区域合并过程主要分为两个阶段:区域合并阶段和合并终止阶段,合并阶段利用颜色信息、边缘信息和区域邻接关系定义区域合并准则,终止准则则采用面积法法确定终止阈值。
(1) 区域合并准则:综合图像颜色信息、边缘信息和区域邻接关系进行区域合并,需要定义区域的距离度量函数ds(i,j) 。设il,iu,iv表示区域i的luv颜色均值,il,iu,iv为区域j的luv颜色均值,pi,j表示相邻区域i,j公共边缘上的像素个数, 为公共边缘两侧a,b两点的像素值,li,lj表示区域i,j的周长,lcs(i,j)为相邻区域公共边缘的长度,则两个区域的距离度量函数ds(i,j)可以表示为:
ds(i,j)= de(i,j) ·dr(i,j) ·m(i,j) (1)
式中,de(i,j) =(il-jl)2+(iu-ju)2+(iv-jv)2表示两个区域的色度距离;表示两个区域的边缘系数,用来说明两个相邻区域的公共边界的明显程度,如果分水岭线为显著的边缘,那么分水岭两侧的像素色度均值会有显著变化;表示区域邻接系数,取值范围为0≤m(i,j)<1,其值越小,邻接程度越低,反之,则邻接程度越高。
本文改进算法的合并准则为:在每次合并时,合并ds(i,j)小的两个相邻区域,即相似度大的两个区域。
(2) 合并终止准则:合并终止准则是合并过程进行到没有满足合并准则需要的区域时终止,因此终止条件的选取直接影响分割结果。一般合并终止准则可以利用合并次数、阈值、区域数目制定,合并次数、阈值、区域数目的选取没有一个恰当的准则,根据不用的图像进行手工调整,经过反复的实验来确定。图像中的小区域一般没有意义,通常是由噪声引起的。本文根据图像面积制定终止阈值t(见式2),对面积小于t的小区域进行合并,当区域面积都si大于t时,合并停止。
(2)
其中,s为图像面积,t为图像比例参数,根据不同的图像可进行手动设置。
(3) 改进算法流程:本文提出的改进算法流程如图2所示。
图2 改进算法流程图
4 实验分析与讨论
4.1 实验分析
本文采用vc++6.0,编程验证了提出的分水岭分割改进算法。运算环境为联想启天m440e商务机,操作系统为 bbbbbbs xp sp1。实验中,分别采用分水岭分割算法,k-mean分割算法[9]和本文提出的改进算法对原始彩色图像进行了分割处理,并对分割结果进行分析比较。
图3 分割结果比较
图3显示几种算法的分割结果比较:(a)为彩色原图;(b)为分水岭分割的结果;(c)为k-mean算法的分割结果;(d)为本文算法的分割结果;(f)为本文算法分割结果的边界曲线;(g)为边界曲线与原始图像的合成结果。
从图3中的分割结果可以看出,(b)图由于没有进行合并操作,所以图像分割严重;图(c)由于没有考虑图像的边缘信息,只是按照颜色进行均匀划分,得到的结果中比较差,产生了很多错误的曲线;图(e)得到的结果比较准确,产生边界比较自然,图像中小区域基本被合并;图(f)是边界提取的结果,采用形态学的方法,选取3×3像素大小的结构元素进行腐蚀;图(g)是合成图,从本文分割算法的得到的边界与原始图像的边界基本吻合,准确率比前两种方法要高。
图4:(a)原始彩色图像;(b)由本文算法得到的边界曲线;(c)为提取的边界与原始图像的合成结果
图5:(a)原始彩色图像;(b)由本文算法得到的边界曲线;(c)为提取的边界与原始图像的合成结果
图4和图5是用本文算法对两幅彩色图像进行分割的结果,图5中为了有助于观察,将边界线用红色的线条表示。从图中可以看出,用本文算法得到的分割结果:轮廓清晰、明显、准确率高,过分割的问题得到极大改善,可见,综合考虑多种信息更有利于取得合理的分割效果。
4.2 简要讨论
基于不同分割方法得到的区域数目和运行时间比较(针对图3的分割结果而言),从附表中的对比可以看出,本文提出的改进算法,分割后的区域数量减少,而且运算速度相对较高。由于在合并时加入了边缘信息和区域邻接关系的判定,运行速度比vincent等人提出的分水岭算法相对较慢,但是分割准确率得到提高。
附表 不同分割算法的区域数目和运行时间
5 结束语
针对分水岭分割算法对复杂彩色图像处理易出现过分割的问题,本文提出了综合考虑多种图像信息的改进算法,以期取得更加准确的分割效果。对实际彩色图像的实验结果表明,本文算法较好地解决了彩色图像处理易出现的过分割问题,得到了比k-mean算法更好的分割效果,准确率和运算时间都相对得到提高。
此外,把图像纹理特性融入图像分割算法中,是我们下一步要改进的工作。
1 引言
随着微电子技术和计算机技术的发展,dsp的数值运算能力逐渐强大,但是它在事件处理方面仍显得有些不足,其软件资源更没有pc机丰富,这些因素在某些程度上限制了dsp的应用。为了充分发挥dsp的数值处理能力,又具备良好的人机接口和丰富软件资源,在许多系统实际应用系统中,一般都采用了pc机和dsp的主从式结构。pc机作为主机完成对dsp的控制,数据处理结果的显示以及人机对话,而大量的数据处理运算则交给dsp来完成。因此实现dsp与pc机可靠通信成为一个重要的问题,并且具有较高的实际应用价值。
为此,本文以现场可编程门阵列fpga为核心,通过软件编程实现pci协议,双端口ram,完成pc机与dsp的数据通讯等功能,显著减少了器件、节省了硬件布线空间,降低了成本,并且数据通讯的性能更稳定、抗干扰能力更强。
2 总体设计
根据对dsp与pc机的数据通讯的功能需求分析,拟定了硬件总体设计框图,如图1所示。实线框内为设计的内部电路,它由核心器件fpga和一些必要的外围电路组成。其中,fpga采用altera公司的cyclone系列fpga——ep1c6q240c8,其工作电压为3.3v,内核电压1.5v,采用0.13um工艺制造,内部有锁相环、ram块,逻辑容量有5980个逻辑单元,支持多种i/o标准和低成本串行配置器件,可很好地满足本设计的应用需求。
图1 硬件总体设计框图
3 功能模块的fpga内部实现
本设计的主要功能完全由fpga通过内部逻辑编程实现。每个功能模块在下面会分别介绍其实现方法。
3.1 pci总线目标设备接口控制器设计
pci总线接口控制器分为主设备和目标设备两类。如果某设备取得了总线控制权,就称其为主设备;而被主设备选中以进行通信的设备称为目标设备。本文设计的pci总线接口控制器是目标设备控制器。其符合2.2版pci技术规范,时钟频率为33mhz,用户数据总线宽度为32位,提供奇偶校验生成,实现pci配置空间64字节头标区寄存器,支持单周期和猝发式读写,支持0型配置空间访问、i/o空间读写、存储器空间读写等pci总线命令。该设计按照“自顶向下”的方法,首先将pci总线接口控制器按功能分为有限状态机模块、奇偶校验模块、配置模块、基地址检查模块、锁存模块、重试计数模块等6个子模块,再分别对各模块进行设计和调试,后进行顶层模块的综合调试。图2是在fpga内部实现的pci模块框图。
图2 pci模块框图
图3 存储器空间写访问时序仿真图
模块设计完成后,利用modelsim软件进行了pci总线接口时序仿真。仿真结果表明各模块设计均符合pci协议要求,可以正常工作。以存储器空间写访问时序为例,向存储器地址空间200000f0中写数据的时序仿真图如图3所示。当frame#为低电平时,pci_add总线给出访问地址,pci_c/be#给出0111的存储器空间写命令。当irdy#和trdy#同时为低电平时,data_write#信号有效,将数据babacaca写入存储器空间。
3.2 双端口ram模块设计
由于pci总线是在33mhz时钟控制下的32位同步总线,而dsp数据总线为16位异步总线,所以pci总线与dsp之间的通信需要进行字长和时序上的转换。因而,采用双端口ram实现pci总线与dsp通信。
在altera的开发工具quartus ii中,有一些基本宏功能可供用户选用。这些基本宏功能都是针对其实现的目标器件进行优化过的模块,用户使用起来非常方便,参数设置简单,只通过图形界面操作即可,而且不易出错。本设计利用此宏功能设计双端口ram模块,其如图4所示。
图4 双端口ram模块图
由于双端口ram提供了两个完全独立的端口,每个端口都有相对独立的地址、数据和控制信号,对于双端口ram两边的器件而言,它与一般ram并无大的区别,只有在两边同时读写同一地址单元时,会发生争用现象,但可以采用适当的通信规则加以避免。本设计采用中断防冲突方式解决两端cpu对同一ram单元的争用问题,以保证pci总线与dsp之间数据传输的实时性和正确性。中断防冲突方式原理是双端口ram中底地址的两个存储单元可以作为信箱使用,左右两端可以对它们进行操作,给出中断信号intl和intr。具体工作过程是:当右端口向左端口信箱进行写操作时,左端口的intl输出低电平,向左cpu申请中断。当左cpu读左端口信箱单元时,清除此中断标志(当左端口向右端口信箱进行写操作时亦同)。
dsp端的中断产生的vhdl程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity int_dsp is
port(reset,pci_wr,dsp_xrd,pci_cs,dsp_cs:in std_logic;
dsp_addr:in std_logic_vector(10 downto 0);
pci_addr:in std_logic_vector(11 downto 0);
dsp_int:out std_logic);
end int_dsp;
architecture rtl of int_dsp is
begin
process(reset,pci_wr,pci_addr, dsp_xrd,dsp_addr,pci_cs,dsp_cs)
begin
if(reset=`0`or(dsp_cs=`0`and dsp_xrd=`0`and dsp_addr="00000000000"))
then dsp_int<=`1`;
elsif(pci_wr`event and pci_wr=`0`) then
if(pci_cs=`0`and pci_addr="000000000000")
then dsp_int<=`0`;
end if; end if; end process; end;
4 结束语
本文介绍了一种基于fpga基于fpga的dsp与pc机通讯设计的方法。较好的实现了两者之间的通讯功能,并且降低经济成本,硬件结构十分简洁,可靠性高,抗干扰能力强,而且与主机接口符合pci的总线标准。
作者简介