查看文章 |
Definiens Developer 采用的是“两两合并或叫成双成对地合并”的分割算法( a pairwise merging algorithm )。这里又分割又合并的,看似前后矛盾,实则辩证统一(参考前文 0005:辨正的统一:Segmentation versus Fusion 和 0025:Scale Parameter)。Definiens 公司也怕用户被搞糊涂,所以在7.0的用户手册里再三限定:“不论是分割还是合并,只要是生成了新对象的操作,都统称之为‘分割( Segmentation )’”。在Definiens里分割影像,其实就像搭积木一样,位于上层的对象是由下层的子对象搭建而成的单元。一个新的对象层次只能产生于两个已经存在的层次之间,父层和子层对象的形状限制着新生成层次(上有老,下有小)对象的形状。初始状态就默认存在的两个层次为:像素层次( Pixel Level )和整景影像层次( Entire Image )。通常情况下,对象层次是在它下面的对象层次基础上产生的( Create Above ),由于 Definiens 采用的分割技术都是基于“区域合并算法( region-merging algorithms)”,因此并不是所有的分割算法都象多尺度分割算法那样允许在现有的层次下方生成新的层次( Create Below )。这也好理解,每个对象层次都产生于它的直接子层次,通过合并子对象生成父对象以生成新的父层次,通过这样来保证整个对象层次网络的拓扑结构的明确性:一层层上去,所有子对象的边界不可能跨越比他层次高的父对象的边界,这是可以进行基于上下文分类的先决条件。即使是Definies中的多尺度分割算法允许两个方向生成层次( Create Above 和 Create Below),但我发现用这两种不同的方式但采用同样的scale parameter分割出来的对象个数有所出入。比如25、50、100、200四个尺度参数,按从上到下和从下到上两种方式分割,各层次的对象数目是不一致的:
其中原因我想应该是这样的:从下到上很简单,合并子对象形成父对象就行了;从上至下,则需要在父对象范围内以像素为单位用区域合并算法形成子对象。也就是说:从下至上的方式,区域合并算法计算的对象只有第一次是像素,后面都是针对对象;而从上至下的方式,区域合并算法每次都是针对单个像素进行的。这两种方式的计算过程是不同的,得出来的结果当然不可能一致。虽然,不知 Definiens 采用了何种控制手段,让这两个结果不至于相差太大(能保证不大相径庭却不能保证完全一致),但我觉得要想控制得两者结果完全一致,还是挺困难的。而且,我猜测区域合并算法会由于计算的起始像素的不同而导致不同的分割结果(没仔细研究过那算法,只能是猜测)。而对每个父对象分割时,由于对象的形状都是不规则的,计算的起始像素更难确定,所以我觉得要使分割的结果具有可重复性不是一件简单的事情,至少Definiens至今没能很好的解决它。(好记性不如烂指头,东阳何生的学习笔记) 我为什么会提到这个问题?因为我发现不同的分割结果,用同样的 TTA MASK 引进的训练样本做分类,然后用同样的验证样本来评价精度,得出来的精度是有差别的,有的时候差别还很大。还没说让两个人来操作,只是让同一个人操作两次,操作的时候就分割的方式变了一下(create above 和 create blow),得出来的结果就不一样了,这样的分类结果可靠吗?可重复性这么差还让人怎么活呀?
| |||||||||||||||||
