本發(fā)明涉及數(shù)字圖像技術(shù),具體涉及一種基于聚類超像素分割的病理圖像特征提取方法。
背景技術(shù):
圖像的特征是描述圖像的重要屬性,特征提取的好壞決定著圖像的處理能否順利進(jìn)行,常用的圖像特征包括顏色,紋理,形狀。常用的顏色特征提取方法有RGB,HSV等;紋理特征提取方法有統(tǒng)計(jì)法(灰度共生矩陣等),結(jié)構(gòu)法,頻譜法等;形狀特征提取方法有面積,周長(zhǎng)等。
病理圖像分割是圖像處理中最為關(guān)鍵的步驟之一,病理圖像的后序處理如特征提取,目標(biāo)識(shí)別等好壞都依賴于分割效果的好壞。然而到目前為止也沒(méi)有一項(xiàng)通用的方法可以對(duì)所有圖像進(jìn)行有效分割。目前的病理圖像分割主要有基于直方圖的閾值分割算法,基于梯度信息的分水嶺分割算法。然而這些算法都有其局限性,如閾值分割算法由于圖像染色程度的多變性效果不佳,分水嶺算法的精確性依賴于細(xì)胞核位置的精準(zhǔn)獲取。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明的目的在于解決現(xiàn)有技術(shù)中存在的不足,提供一種基于聚類超像素分割的病理圖像特征提取方法。
技術(shù)方案:本發(fā)明的一種基于聚類超像素分割的病理圖像特征提取方法,依次包括以下步驟:
(1)初始化種子點(diǎn),具體過(guò)程為:
(1-1)確定預(yù)分割為K個(gè)相同尺寸的超像素;
(1-2)假設(shè)圖像有N個(gè)像素點(diǎn),預(yù)分割為K個(gè)相同尺寸的超像素,那么每個(gè)超像素的大小為N/K,求出每個(gè)種子點(diǎn)的距離;
(1-3)對(duì)原圖中非邊緣的每點(diǎn)求出像素差;
(2)相似度衡量;
(2-1)以種子點(diǎn)為中心,在預(yù)分割每塊的區(qū)域大小中,求出該區(qū)域所有像素點(diǎn)距離最近的種子點(diǎn)的歐幾里得距離;
(2-2)求像素點(diǎn)與種子點(diǎn)的相似程度距離;
(2-3)確定每個(gè)像素點(diǎn)的所屬種子點(diǎn)的標(biāo)簽;
(2-4)求出誤差,當(dāng)誤差高于一定值時(shí)反復(fù)迭代,直到誤差低于設(shè)定值時(shí)跳出迭代;
(2-5)增強(qiáng)連通性:對(duì)于分割的每一塊區(qū)域計(jì)算其像素點(diǎn)個(gè)數(shù),如果低于一定值,則給該塊區(qū)域賦值為相鄰的標(biāo)簽;
(3)提取分割圖像的特征:
(3-1)提取分割部分圖像的形狀特征;
(3-2)提取分割部分圖像的直方圖信息:
(3-3)提取分割部分圖像的紋理特征。
進(jìn)一步的,所述步驟(1-2)中,每個(gè)種子點(diǎn)的距離近似為
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為圖像的總共像素點(diǎn),K為確定的預(yù)分割的超像素集合個(gè)數(shù),
superpixel_step為每個(gè)種子點(diǎn)的距離;width_strips為圖像的寬可以容納的種子的個(gè)數(shù),height_strips為圖像的高可以容納的種子的個(gè)數(shù);
image_width是圖像的寬,image_height是圖像的高,width_err為圖像的寬容納種子個(gè)數(shù)后多余的空間,height_err為圖像的高容納種子個(gè)數(shù)后多余的空間。
進(jìn)一步的,所述步驟(1-3)中,對(duì)原圖中非邊緣的每點(diǎn)求出像素差具體過(guò)程為:
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是橫坐標(biāo),pixel_j為縱坐標(biāo);
為避免種子點(diǎn)處在圖像的邊緣位置,以及對(duì)后續(xù)的聚類過(guò)程造成干擾,需要將種子點(diǎn)移動(dòng)每個(gè)預(yù)分割區(qū)域的中心位置,并向中心位置的周圍8個(gè)方向?qū)ふ业较袼攸c(diǎn)差最小的位置,將該種子點(diǎn)移動(dòng)該位置,同時(shí)為每個(gè)種子分配一個(gè)單獨(dú)的標(biāo)簽。
進(jìn)一步的,所述步驟(2-1)的具體方法為:
distance_spatial=sqrt((seed_i-pixel_i)^2+(seed_j-pixel_j)^2);
distance_spatial為像素點(diǎn)距離最近種子點(diǎn)的歐幾里得距離,seed_i為種子點(diǎn)橫坐標(biāo),seed_j為種子點(diǎn)縱坐標(biāo),pixel_i為像素點(diǎn)橫坐標(biāo),pixel_j為像素點(diǎn)縱坐標(biāo)。
進(jìn)一步的,所述步驟(2-2)的具體方法為:
distance_np=distance_intensity+distance_spatial*m_weight/superpixel_square
distance_intensity=abs(seed_intensity-pixel_intensity)
seed_intensity為種子點(diǎn)的像素,pixel_intensity為像素點(diǎn)的像素;
distance_spatial為像素點(diǎn)的歐幾里得距離,m_weight為自定義的權(quán)重,
superpixel_square是每個(gè)種子點(diǎn)預(yù)分割的區(qū)域大小。
進(jìn)一步的,所述步驟(2-3)中確定每個(gè)像素點(diǎn)的所屬種子點(diǎn)的標(biāo)簽的過(guò)程是:
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為像素點(diǎn)距離種子點(diǎn)的相似度距離,并賦上初始值為正無(wú)窮;對(duì)于每個(gè)種子點(diǎn)的周圍預(yù)分割大小內(nèi)的像素點(diǎn)求出相似度,取最小相似度距離的種子點(diǎn)標(biāo)簽,并給該像素點(diǎn)所屬標(biāo)簽賦值。
進(jìn)一步的,所述步驟(2-4)的具體方法為:對(duì)圖像中所有像素點(diǎn)進(jìn)行遍歷,得到各個(gè)標(biāo)簽的所有像素點(diǎn)的橫坐標(biāo)之和sigma_i(pixel_label),縱坐標(biāo)之和sigma_j(pixel_label),像素值之和sigma_intensity,以及像素點(diǎn)的個(gè)數(shù)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)表示所有標(biāo)簽相同點(diǎn)的橫坐標(biāo)平均值;
i_segmentseeds(:,2)表示所有標(biāo)簽相同點(diǎn)的縱坐標(biāo)平均值;
i_segmentseeds(:,3)表示所有標(biāo)簽相同點(diǎn)的像素值平均值;
i_seederror_sum為誤差和,當(dāng)誤差和低于一定值時(shí)跳出迭代。
進(jìn)一步的,所述步驟(3-1)中,提取分割部分圖像的形狀特征的具體過(guò)程是:
上述所得原圖的像素點(diǎn)矩陣mat_image和每個(gè)像素點(diǎn)的標(biāo)簽矩陣mat_segment_label,因?yàn)闃?biāo)簽相同的為分割結(jié)果的同一塊區(qū)域,調(diào)用matlab的內(nèi)置函數(shù)regionprops(mat_segment_label,’all’);
可以得到每塊區(qū)域的形狀特征以及每一塊區(qū)域的像素點(diǎn)坐標(biāo)位置index(label);
label為像素點(diǎn)所屬的標(biāo)簽,index(label)的第一維是像素點(diǎn)的縱坐標(biāo),第二維是橫坐標(biāo)。
進(jìn)一步的,所述步驟(3-2)中提取分割部分圖像的直方圖信息的方法為:
對(duì)于每一塊分割區(qū)域的所有像素點(diǎn)進(jìn)行遍歷
dy=index(j,1),dx=index(j,2),
pixel=mat_image(dx,dy),counts(pixel)=counts(pixel)+1
Index(label)為像素點(diǎn)的坐標(biāo),index(j,1),index(j,2)分別為像素點(diǎn)的縱坐標(biāo)和橫坐標(biāo),counts(pixel)為統(tǒng)計(jì)該區(qū)域包含該像素值的點(diǎn)個(gè)數(shù)。
進(jìn)一步的,所述步驟(3-3)的具體方法為:
使用直方圖提取圖像的紋理特征的方法,直方圖反映的是圖像的亮度在各個(gè)灰度級(jí)上出現(xiàn)的概率,用函數(shù)f(x)表示,x代表灰度值;令m為x的均值,即:則均值m的n階矩為:
其中,i的取值范圍為像素點(diǎn)變化的范圍,即L為像素點(diǎn)的最大值255,xi的取值范圍為0-255,且為整數(shù),因?yàn)閤0為0,所以在公式中直接省去;u1表示圖像灰度值的分散程度,u2為方差,是灰度對(duì)比度的量度,表達(dá)了灰度值相對(duì)于均值的分布情況,描述了直方圖的相對(duì)平滑程度,可反映圖像中紋理的深淺程度。u3定義為偏度,表達(dá)了灰度值相對(duì)于均值的對(duì)稱性,描述了直方圖的偏斜圖,即直方圖分布對(duì)稱與否的情況,可反映圖像中紋理灰度起伏分布。u4定義為峰度,它表示了直方圖的相對(duì)平坦性,即直方圖分布聚集于均值附近還是接近兩端的情況,進(jìn)一步描述了圖像中紋理灰度的反差。
有益效果:本發(fā)明基于區(qū)域增長(zhǎng),通過(guò)顏色和距離的相似性進(jìn)行聚類超像素分割,方法思想簡(jiǎn)單、效果良好。對(duì)分割后的每一塊區(qū)域通過(guò)直方圖提取該區(qū)域的顏色,紋理的特征信息,并計(jì)算該區(qū)域的面積,周長(zhǎng),以及與區(qū)域具有相同標(biāo)準(zhǔn)二階中心矩的橢圓長(zhǎng)軸長(zhǎng)度,短軸長(zhǎng)度作為形狀特征。
綜上所述,本發(fā)明速度較快,能生成緊湊,近似均勻的超像素,分割效果好。
附圖說(shuō)明
圖1為實(shí)施例中原圖;
圖2位實(shí)施例中超像素分割后的示意圖;
圖3為實(shí)施例中分割后的某一區(qū)域的直方圖。
具體實(shí)施方式
下面對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說(shuō)明,但是本發(fā)明的保護(hù)范圍不局限于所述實(shí)施例。
本發(fā)明的一種基于超像素分割提取圖像特征的方法,包括如下步驟:
(1)初始化種子點(diǎn):
(1-1)確定預(yù)分割為K個(gè)相同尺寸的超像素;
(1-2)假設(shè)圖像有N個(gè)像素點(diǎn),預(yù)分割為K個(gè)相同尺寸的超像素,那么每個(gè)超像素的大小為N/K,且每個(gè)種子點(diǎn)的距離近似為
(1-3)對(duì)原圖中非邊緣的每點(diǎn)求出像素差
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是橫坐標(biāo),pixel_j為縱坐標(biāo)
將種子點(diǎn)移動(dòng)到每個(gè)預(yù)分割區(qū)域的中心位置,并在中心位置的周圍8個(gè)方向?qū)ふ业较袼攸c(diǎn)差最小的位置,將該種子點(diǎn)移動(dòng)該位置,同時(shí)為每個(gè)種子分配一個(gè)單獨(dú)的標(biāo)簽。
(2)相似度衡量:
(2-1)以種子點(diǎn)為中心,在預(yù)分割每塊的區(qū)域大小中求出該區(qū)域所有像素點(diǎn)距離最近的種子點(diǎn)的歐幾里得距離:
distance_spatial=sqrt((seed_i-pixel_i)^2+(seed_j-pixel_j)^2)
distance_spatial為像素點(diǎn)距離最近種子點(diǎn)的歐幾里得距離,seed_i為種子點(diǎn)橫坐標(biāo),seed_j為種子點(diǎn)縱坐標(biāo),pixel_i為像素點(diǎn)橫坐標(biāo),pixel_j為像素點(diǎn)縱坐標(biāo)。
(2-2)求像素點(diǎn)與種子點(diǎn)的相似程度距離:
distance_np=distance_intensity+distance_spatial*m_weight/superpixel_square
distance_intensity=abs(seed_intensity-pixel_intensity)
seed_intensity為種子點(diǎn)的像素,pixel_intensity為像素點(diǎn)的像素
distance_spatial為像素點(diǎn)的歐幾里得距離,m_weight為自定義的權(quán)重,
superpixel_square是每個(gè)種子點(diǎn)預(yù)分割的區(qū)域大小。
(2-3)確定每個(gè)像素點(diǎn)的所屬種子點(diǎn)的標(biāo)簽:
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為像素點(diǎn)距離種子點(diǎn)的相似度,并賦上初始值為正無(wú)窮。對(duì)于每個(gè)種子點(diǎn)的周圍預(yù)分割大小內(nèi)的像素點(diǎn)求出相似度,取最小相似度距離的種子點(diǎn)標(biāo)簽,并給該像素點(diǎn)所屬標(biāo)簽賦值。
(2-4)求出誤差,當(dāng)誤差高于一定值時(shí)反復(fù)迭代,直到誤差低于設(shè)定值時(shí)跳出迭代。
對(duì)圖像中所有像素點(diǎn)進(jìn)行遍歷,得到各個(gè)標(biāo)簽的所有像素點(diǎn)的橫坐標(biāo)之和sigma_i(pixel_label),縱坐標(biāo)之和sigma_j(pixel_label),像素值之和sigma_intensity,以及像素點(diǎn)的個(gè)數(shù)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)表示所有標(biāo)簽相同點(diǎn)的橫坐標(biāo)平均值
i_segmentseeds(:,2)表示所有標(biāo)簽相同點(diǎn)的縱坐標(biāo)平均值
i_segmentseeds(:,3)表示所有標(biāo)簽相同點(diǎn)的像素值平均值
i_seederror_sum為誤差和,當(dāng)誤差和低于一定值時(shí)跳出迭代
(2-5)增強(qiáng)連通性
對(duì)于分割的每一塊區(qū)域計(jì)算其像素點(diǎn)個(gè)數(shù),如果低于一定值,則給該塊區(qū)域賦值為相鄰的標(biāo)簽。
(3)提取分割圖像的特征:
(3-1)提取分割部分圖像的形狀特征:
經(jīng)過(guò)前面三個(gè)步驟我們已經(jīng)得到原圖的像素點(diǎn)矩陣mat_image和每個(gè)像素點(diǎn)的標(biāo)簽矩陣mat_segment_label,因?yàn)闃?biāo)簽相同的為分割結(jié)果的同一塊區(qū)域,調(diào)用matlab的內(nèi)置函數(shù)regionprops(mat_segment_label,’all’)可以得到每塊區(qū)域的形狀特征以及每一塊區(qū)域的像素點(diǎn)坐標(biāo)位置index(label)。label為像素點(diǎn)所屬的標(biāo)簽,index(label)的第一維是像素點(diǎn)的縱坐標(biāo),第二維是橫坐標(biāo)。
(3-2)提取分割部分圖像的直方圖信息:
對(duì)于每一塊分割區(qū)域的所有像素點(diǎn)遍歷
dy=index(j,1),dx=index(j,2),
pixel=mat_image(dx,dy),counts(pixel)=counts(pixel)+1
(3-3)提取分割部分圖像的紋理特征:
借助灰度直方圖的矩來(lái)描述紋理特征是統(tǒng)計(jì)方法中最簡(jiǎn)單的一種。直方圖反映的是圖像的亮度在各個(gè)灰度級(jí)上出現(xiàn)的概率,可用函數(shù)f(x)表示,x代表灰度值。令m為x的均值,即:則均值m的n階矩為:u1表示圖像灰度值的分散程度,u2為方差,是灰度對(duì)比度的量度。u3定義為偏度,表達(dá)了灰度值相對(duì)于均值的對(duì)稱性,描述了直方圖的偏斜圖,即直方圖分布對(duì)稱與否的情況,可反映圖像中紋理灰度起伏分布。u4定義為峰度,它表示了直方圖的相對(duì)平坦性,即直方圖分布聚集于均值附近還是接近兩端的情況,進(jìn)一步描述了圖像中紋理灰度的反差。
實(shí)施例:下面以病理圖像為例來(lái)說(shuō)明本發(fā)明的步驟。
步驟1:讀取原圖大小,大小為1360*1040,如圖1所示,取得原圖像素矩陣;
步驟2:確定超像素集合個(gè)數(shù);
步驟3:算出超像素種子點(diǎn)的坐標(biāo);
步驟4:算出超像素每個(gè)種子點(diǎn)包含的其他像素,即原圖中所有像素點(diǎn)所屬標(biāo)簽;
步驟5:反復(fù)迭代,直到誤差低于設(shè)定值;
步驟6:合并某些分割過(guò)于小的區(qū)域,增強(qiáng)連通性;
步驟7:對(duì)于分割好的每一塊區(qū)域提取出圖像的特征值。