一种基于聚类超像素分割的病理图像特征提取方法与流程

文档序号:12675195阅读:394来源:国知局
一种基于聚类超像素分割的病理图像特征提取方法与流程

本发明涉及数字图像技术,具体涉及一种基于聚类超像素分割的病理图像特征提取方法。



背景技术:

图像的特征是描述图像的重要属性,特征提取的好坏决定着图像的处理能否顺利进行,常用的图像特征包括颜色,纹理,形状。常用的颜色特征提取方法有RGB,HSV等;纹理特征提取方法有统计法(灰度共生矩阵等),结构法,频谱法等;形状特征提取方法有面积,周长等。

病理图像分割是图像处理中最为关键的步骤之一,病理图像的后序处理如特征提取,目标识别等好坏都依赖于分割效果的好坏。然而到目前为止也没有一项通用的方法可以对所有图像进行有效分割。目前的病理图像分割主要有基于直方图的阈值分割算法,基于梯度信息的分水岭分割算法。然而这些算法都有其局限性,如阈值分割算法由于图像染色程度的多变性效果不佳,分水岭算法的精确性依赖于细胞核位置的精准获取。



技术实现要素:

发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于聚类超像素分割的病理图像特征提取方法。

技术方案:本发明的一种基于聚类超像素分割的病理图像特征提取方法,依次包括以下步骤:

(1)初始化种子点,具体过程为:

(1-1)确定预分割为K个相同尺寸的超像素;

(1-2)假设图像有N个像素点,预分割为K个相同尺寸的超像素,那么每个超像素的大小为N/K,求出每个种子点的距离;

(1-3)对原图中非边缘的每点求出像素差;

(2)相似度衡量;

(2-1)以种子点为中心,在预分割每块的区域大小中,求出该区域所有像素点距离最近的种子点的欧几里得距离;

(2-2)求像素点与种子点的相似程度距离;

(2-3)确定每个像素点的所属种子点的标签;

(2-4)求出误差,当误差高于一定值时反复迭代,直到误差低于设定值时跳出迭代;

(2-5)增强连通性:对于分割的每一块区域计算其像素点个数,如果低于一定值,则给该块区域赋值为相邻的标签;

(3)提取分割图像的特征:

(3-1)提取分割部分图像的形状特征;

(3-2)提取分割部分图像的直方图信息:

(3-3)提取分割部分图像的纹理特征。

进一步的,所述步骤(1-2)中,每个种子点的距离近似为

width_strips=image_width/superpixel_step

width_err=image_height-superpixel_step*width_strips

height_strips=image_height/superpixel_step

height_err=image_height-superpixel_step*height_strips

其中,N为图像的总共像素点,K为确定的预分割的超像素集合个数,

superpixel_step为每个种子点的距离;width_strips为图像的宽可以容纳的种子的个数,height_strips为图像的高可以容纳的种子的个数;

image_width是图像的宽,image_height是图像的高,width_err为图像的宽容纳种子个数后多余的空间,height_err为图像的高容纳种子个数后多余的空间。

进一步的,所述步骤(1-3)中,对原图中非边缘的每点求出像素差具体过程为:

mat_edge(pixel_i,pixel_j)=pixel_dx+pixel_dy

pixel_dx=(mat_image(pixel_i-1,pixel_j)-mat_image(pixel_i+1,pixel_j))^2

pixel_dy=(mat_image(piexl_i,pixel_j-1)-mat_image(pixel_i,pixel_j+1))^2

mat_image为原图的像素矩阵,piexl_i是横坐标,pixel_j为纵坐标;

为避免种子点处在图像的边缘位置,以及对后续的聚类过程造成干扰,需要将种子点移动每个预分割区域的中心位置,并向中心位置的周围8个方向寻找到像素点差最小的位置,将该种子点移动该位置,同时为每个种子分配一个单独的标签。

进一步的,所述步骤(2-1)的具体方法为:

distance_spatial=sqrt((seed_i-pixel_i)^2+(seed_j-pixel_j)^2);

distance_spatial为像素点距离最近种子点的欧几里得距离,seed_i为种子点横坐标,seed_j为种子点纵坐标,pixel_i为像素点横坐标,pixel_j为像素点纵坐标。

进一步的,所述步骤(2-2)的具体方法为:

distance_np=distance_intensity+distance_spatial*m_weight/superpixel_square

distance_intensity=abs(seed_intensity-pixel_intensity)

seed_intensity为种子点的像素,pixel_intensity为像素点的像素;

distance_spatial为像素点的欧几里得距离,m_weight为自定义的权重,

superpixel_square是每个种子点预分割的区域大小。

进一步的,所述步骤(2-3)中确定每个像素点的所属种子点的标签的过程是:

mat_pixel_distance(pixel_i,pixel_j)=inf

if(distance_np<mat_pixel_distance(pixel,pixel_j)

mat_pixel_distance(pixel_i,pixel_j)=distance_np;

mat_segment_label(pixel_i,pixel_j)=m;

建立初始矩阵mat_pixel_distance为像素点距离种子点的相似度距离,并赋上初始值为正无穷;对于每个种子点的周围预分割大小内的像素点求出相似度,取最小相似度距离的种子点标签,并给该像素点所属标签赋值。

进一步的,所述步骤(2-4)的具体方法为:对图像中所有像素点进行遍历,得到各个标签的所有像素点的横坐标之和sigma_i(pixel_label),纵坐标之和sigma_j(pixel_label),像素值之和sigma_intensity,以及像素点的个数sigma_pixelnumber(pixel_label);

i_segmentseeds=segmentseeds

i_segmentseeds(:,1)=round(sigma_i./sigma_pixelnumber);

i_segmentseeds(:,2)=round(sigma_j./sigma_pixelnumber);

i_segmentseeds(:,3)=round(sigma_intensity./sigma_pixelnumber);

i_seederror=abs(i_segmentseeds(:,1:2)-segmentseeds(:,1:2))

i_seederror_sum=sum(i_seederror(:))

i_segmentseeds(:,1)表示所有标签相同点的横坐标平均值;

i_segmentseeds(:,2)表示所有标签相同点的纵坐标平均值;

i_segmentseeds(:,3)表示所有标签相同点的像素值平均值;

i_seederror_sum为误差和,当误差和低于一定值时跳出迭代。

进一步的,所述步骤(3-1)中,提取分割部分图像的形状特征的具体过程是:

上述所得原图的像素点矩阵mat_image和每个像素点的标签矩阵mat_segment_label,因为标签相同的为分割结果的同一块区域,调用matlab的内置函数regionprops(mat_segment_label,’all’);

可以得到每块区域的形状特征以及每一块区域的像素点坐标位置index(label);

label为像素点所属的标签,index(label)的第一维是像素点的纵坐标,第二维是横坐标。

进一步的,所述步骤(3-2)中提取分割部分图像的直方图信息的方法为:

对于每一块分割区域的所有像素点进行遍历

dy=index(j,1),dx=index(j,2),

pixel=mat_image(dx,dy),counts(pixel)=counts(pixel)+1

Index(label)为像素点的坐标,index(j,1),index(j,2)分别为像素点的纵坐标和横坐标,counts(pixel)为统计该区域包含该像素值的点个数。

进一步的,所述步骤(3-3)的具体方法为:

使用直方图提取图像的纹理特征的方法,直方图反映的是图像的亮度在各个灰度级上出现的概率,用函数f(x)表示,x代表灰度值;令m为x的均值,即:则均值m的n阶矩为:

其中,i的取值范围为像素点变化的范围,即L为像素点的最大值255,xi的取值范围为0-255,且为整数,因为x0为0,所以在公式中直接省去;u1表示图像灰度值的分散程度,u2为方差,是灰度对比度的量度,表达了灰度值相对于均值的分布情况,描述了直方图的相对平滑程度,可反映图像中纹理的深浅程度。u3定义为偏度,表达了灰度值相对于均值的对称性,描述了直方图的偏斜图,即直方图分布对称与否的情况,可反映图像中纹理灰度起伏分布。u4定义为峰度,它表示了直方图的相对平坦性,即直方图分布聚集于均值附近还是接近两端的情况,进一步描述了图像中纹理灰度的反差。

有益效果:本发明基于区域增长,通过颜色和距离的相似性进行聚类超像素分割,方法思想简单、效果良好。对分割后的每一块区域通过直方图提取该区域的颜色,纹理的特征信息,并计算该区域的面积,周长,以及与区域具有相同标准二阶中心矩的椭圆长轴长度,短轴长度作为形状特征。

综上所述,本发明速度较快,能生成紧凑,近似均匀的超像素,分割效果好。

附图说明

图1为实施例中原图;

图2位实施例中超像素分割后的示意图;

图3为实施例中分割后的某一区域的直方图。

具体实施方式

下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。

本发明的一种基于超像素分割提取图像特征的方法,包括如下步骤:

(1)初始化种子点:

(1-1)确定预分割为K个相同尺寸的超像素;

(1-2)假设图像有N个像素点,预分割为K个相同尺寸的超像素,那么每个超像素的大小为N/K,且每个种子点的距离近似为

(1-3)对原图中非边缘的每点求出像素差

mat_edge(pixel_i,pixel_j)=pixel_dx+pixel_dy

pixel_dx=(mat_image(pixel_i-1,pixel_j)-mat_image(pixel_i+1,pixel_j))^2

pixel_dy=(mat_image(piexl_i,pixel_j-1)-mat_image(pixel_i,pixel_j+1))^2

mat_edge位原图的像素矩阵,pixel_i是横坐标,pixel_j为纵坐标

将种子点移动到每个预分割区域的中心位置,并在中心位置的周围8个方向寻找到像素点差最小的位置,将该种子点移动该位置,同时为每个种子分配一个单独的标签。

(2)相似度衡量:

(2-1)以种子点为中心,在预分割每块的区域大小中求出该区域所有像素点距离最近的种子点的欧几里得距离:

distance_spatial=sqrt((seed_i-pixel_i)^2+(seed_j-pixel_j)^2)

distance_spatial为像素点距离最近种子点的欧几里得距离,seed_i为种子点横坐标,seed_j为种子点纵坐标,pixel_i为像素点横坐标,pixel_j为像素点纵坐标。

(2-2)求像素点与种子点的相似程度距离:

distance_np=distance_intensity+distance_spatial*m_weight/superpixel_square

distance_intensity=abs(seed_intensity-pixel_intensity)

seed_intensity为种子点的像素,pixel_intensity为像素点的像素

distance_spatial为像素点的欧几里得距离,m_weight为自定义的权重,

superpixel_square是每个种子点预分割的区域大小。

(2-3)确定每个像素点的所属种子点的标签:

mat_pixel_distance(pixel_i,pixel_j)=inf

if(distance_np<mat_pixel_distance(pixel,pixel_j)

mat_pixel_distance(pixel_i,pixel_j)=distance_np;

mat_segment_label(pixel_i,pixel_j)=m;

建立初始矩阵mat_pixel_distance为像素点距离种子点的相似度,并赋上初始值为正无穷。对于每个种子点的周围预分割大小内的像素点求出相似度,取最小相似度距离的种子点标签,并给该像素点所属标签赋值。

(2-4)求出误差,当误差高于一定值时反复迭代,直到误差低于设定值时跳出迭代。

对图像中所有像素点进行遍历,得到各个标签的所有像素点的横坐标之和sigma_i(pixel_label),纵坐标之和sigma_j(pixel_label),像素值之和sigma_intensity,以及像素点的个数sigma_pixelnumber(pixel_label)。

i_segmentseeds=segmentseeds

i_segmentseeds(:,1)=round(sigma_i./sigma_pixelnumber);

i_segmentseeds(:,2)=round(sigma_j./sigma_pixelnumber);

i_segmentseeds(:,3)=round(sigma_intensity./sigma_pixelnumber);

i_seederror=abs(i_segmentseeds(:,1:2)-segmentseeds(:,1:2))

i_seederror_sum=sum(i_seederror(:))

i_segmentseeds(:,1)表示所有标签相同点的横坐标平均值

i_segmentseeds(:,2)表示所有标签相同点的纵坐标平均值

i_segmentseeds(:,3)表示所有标签相同点的像素值平均值

i_seederror_sum为误差和,当误差和低于一定值时跳出迭代

(2-5)增强连通性

对于分割的每一块区域计算其像素点个数,如果低于一定值,则给该块区域赋值为相邻的标签。

(3)提取分割图像的特征:

(3-1)提取分割部分图像的形状特征:

经过前面三个步骤我们已经得到原图的像素点矩阵mat_image和每个像素点的标签矩阵mat_segment_label,因为标签相同的为分割结果的同一块区域,调用matlab的内置函数regionprops(mat_segment_label,’all’)可以得到每块区域的形状特征以及每一块区域的像素点坐标位置index(label)。label为像素点所属的标签,index(label)的第一维是像素点的纵坐标,第二维是横坐标。

(3-2)提取分割部分图像的直方图信息:

对于每一块分割区域的所有像素点遍历

dy=index(j,1),dx=index(j,2),

pixel=mat_image(dx,dy),counts(pixel)=counts(pixel)+1

(3-3)提取分割部分图像的纹理特征:

借助灰度直方图的矩来描述纹理特征是统计方法中最简单的一种。直方图反映的是图像的亮度在各个灰度级上出现的概率,可用函数f(x)表示,x代表灰度值。令m为x的均值,即:则均值m的n阶矩为:u1表示图像灰度值的分散程度,u2为方差,是灰度对比度的量度。u3定义为偏度,表达了灰度值相对于均值的对称性,描述了直方图的偏斜图,即直方图分布对称与否的情况,可反映图像中纹理灰度起伏分布。u4定义为峰度,它表示了直方图的相对平坦性,即直方图分布聚集于均值附近还是接近两端的情况,进一步描述了图像中纹理灰度的反差。

实施例:下面以病理图像为例来说明本发明的步骤。

步骤1:读取原图大小,大小为1360*1040,如图1所示,取得原图像素矩阵;

步骤2:确定超像素集合个数;

步骤3:算出超像素种子点的坐标;

步骤4:算出超像素每个种子点包含的其他像素,即原图中所有像素点所属标签;

步骤5:反复迭代,直到误差低于设定值;

步骤6:合并某些分割过于小的区域,增强连通性;

步骤7:对于分割好的每一块区域提取出图像的特征值。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1