形態(tài)學(xué)圖像處理2

二值圖像中的形態(tài)學(xué)應(yīng)用

擊中擊不中

形態(tài)學(xué)擊中擊不中變換常用于圖像中某種特定形狀的精確定位涮瞻,是一種形狀檢測的基本工具,可以表示為A?S=(AΘS1)?(AcΘS2)假褪,其中S1與S2沒有任何交集署咽,且S1和S2的并集為S,也就是說生音,利用S1腐蝕A宁否,再用S1的補集S2腐蝕A的補集Ac,再取二者的交集缀遍。

matlab中進行擊中擊不中變換的函數(shù)為bwhitmiss()慕匠;

Ihm=bwhitmiss(I,S1,S2);

I為輸入圖像,S1和S2為前面所說的結(jié)構(gòu)元素瑟由,Ihm為完成擊中擊不中變換后的結(jié)果圖像絮重。

邊界提取與跟蹤

通過邊界提取算法可以得到物體的邊界輪廓;而邊界跟蹤算法在提取邊界的同時還能依次記錄下邊界的像素位置信息歹苦。

邊界提取

對于二值圖像青伤,我們可以很明顯的看到,如果發(fā)現(xiàn)其中一個黑點的8個鄰域內(nèi)都是黑點殴瘦,那么這個點就是圖像的內(nèi)部點狠角,而我們想要得到這個圖像的邊界,只需要刪除它所有的內(nèi)部點即可蚪腋,因此我們可以逐行進行掃描丰歌,一旦發(fā)現(xiàn)內(nèi)部點,就進行刪除屉凯,實際上立帖,這就相當于是用一個3×3的正方形結(jié)構(gòu)元素對圖像進行腐蝕,腐蝕所得到的圖像就是這個圖像的內(nèi)部點構(gòu)成的圖像悠砚,而后再對其進行刪除晓勇,就留下了邊界元素。

tip:3×3十字架進行腐蝕的得到的邊界是8連通邊界,正方形則是4連通邊界绑咱。

matlab實現(xiàn):

>> I=imread('head_portrait.bmp');
>> se=strel('square',3);
>> Ie=imerode(I,se);
>> Iout=I-Ie;
>> subplot(1,3,1),imshow(I);
>> subplot(1,3,2),imshow(Ie);
>> subplot(1,3,3),imshow(Iout);
左中右順次為原圖绰筛、腐蝕后、邊界

邊界跟蹤算法

我們想要依次記錄下邊界的各個像素點描融,首先我們得找到其中一點铝噩,然后再從這個點出發(fā),按照某種規(guī)則順序窿克,依次找到下一點骏庸,最終回到初始點,這樣我們就記錄下了整條邊界让歼。

所以敞恋,我們先按照從左到右從上到下的順序掃描圖像,就可以找到圖像最左上的點谋右,可想而知硬猫,這個點的左側(cè)和上側(cè)都不可能存在點,因此我們可以設(shè)定從左下開始跟蹤改执,如果這點是黑點啸蜜,則判定為時邊界點,若不是辈挂,則在此跟蹤方向上逆時針旋轉(zhuǎn)45度繼續(xù)探查衬横,直到找到邊界點為止,找到邊界點后终蒂,在當前方向的基礎(chǔ)上順時針90度蜂林,用上述方法進行探查,尋找下一個邊界點拇泣。

如圖所示


算法示意

tip:這種算法只能用于跟蹤圖像的外輪廓噪叙,若圖像帶有孔洞,并不能跟蹤孔洞的輪廓霉翔。

區(qū)域填充

tip:4連通邊界內(nèi)部區(qū)域是8連通的睁蕾,8連通邊界內(nèi)部區(qū)域則是4連通的。因此债朵,填充4連通邊界的結(jié)構(gòu)元素應(yīng)選擇3×3正方形子眶,而填充8連通邊界的結(jié)構(gòu)元素應(yīng)該選擇3×3十字架結(jié)構(gòu)

簡要描述一下序芦,已知某一8連通邊界和邊界內(nèi)部的某個點臭杰,然后從該點開始填充整個邊界包圍的區(qū)域,這一過程也可以稱作是“種子填充”谚中。

十字架結(jié)構(gòu)元素可以保證只要種子點在邊界內(nèi)渴杆,所膨脹后的結(jié)構(gòu)都不會產(chǎn)生邊界以外的點(最多落在邊界上)射窒,這樣,我們只需要用膨脹后的圖像與邊界的補圖像進行相交将塑,就能把膨脹限制在邊界內(nèi)部,直到我們的膨脹圖像B填充滿邊界A蝌麸,這時候取AB并集点寥,就是最終的區(qū)域填充結(jié)果。

連通分量提取

基于形態(tài)學(xué)的連通分量提取操作和區(qū)域填充有點相似来吩,以8連通的圖像進行比方敢辩,假設(shè)圖像A的內(nèi)部有多個連通分量,B為連通分量A1內(nèi)某點弟疆,其他連通分量自然與A1起碼有一個像素寬的空白縫隙戚长,3×3的結(jié)構(gòu)元素保證了只要B在A1的內(nèi)部,每次膨脹都不會產(chǎn)生在其他連通區(qū)域范圍內(nèi)的點怠苔,然后用每次膨脹的結(jié)果圖像與A進行相交同廉,就能把膨脹限制在A1的內(nèi)部,最終使得B充滿A1柑司,也就完成了連通分量A1的提取迫肖。

tip:提取連通分量結(jié)構(gòu)元素(8連通使用3×3正方形,4連通使用3×3十字形)

matlab中有專門的函數(shù)bwlabel()進行實現(xiàn)攒驰,調(diào)用語法如下:

[L   num]=bwlabel(Ibw,conn)

其中蟆湖,Ibw為輸入的二值圖像,conn為可選參數(shù)玻粪,指明要提取的連通分量是4連通還是8連通隅津,一般默認為8,L為標注圖像劲室,num為連通分量的個數(shù)伦仍。

示例:matlab實現(xiàn)在人臉局部定位嘴的中心

I = imread('mouth.bmp'); %讀入圖像
Id = im2double(I);
figure, imshow(Id) % 得到8.24(a)
Ibw = im2bw(Id, 0.38); % 以0.38為閾值二值化
Ibw = 1 - Ibw; %為在Matlab中進行處理,將圖像反色
figure, imshow(Ibw) % 得到8.24(b)
hold on
[L, num] = bwlabel(Ibw, 8); % 標注連通分量
disp(['圖中共有' num2str(num) '個連通分量'])
 
% 找出最大的連通分量(嘴)
max = 0; % 當前最大連通分量的大小
indMax = 0; % 當前最大連通分量的索引
for k = 1:num
    [y x] = find(L == k); % 找出編號為k的連通區(qū)的行索引集合y和列索引集合x
    
    nSize = length(y); %計算該連通區(qū)中的像素數(shù)目
    if(nSize > max)
        max = nSize;
        indMax = k;
    end
end
 
if indMax == 0
    disp('沒有找到連通分量')
    return
end
 
% 計算并顯示最大連通分量(嘴)的中心
[y x] = find(L == indMax);
yMean = mean(y);
xMean = mean(x);
plot(xMean, yMean, 'Marker', 'o', 'MarkerSize', 14, 'MarkerEdgeColor', 'w', 'MarkerFaceColor', 'w');
plot(xMean, yMean, 'Marker', '*', 'MarkerSize', 12, 'MarkerEdgeColor', 'k'); % 得到8.24(c)
嘴部圖像

定位得到的嘴部中心

tip:二值化處理痹籍,小于閾值的設(shè)定為白色(255)呢铆,大于閾值的設(shè)定為黑色(0)。

示例:細菌計數(shù)蹲缠,對顯微鏡視野內(nèi)的細菌進行計數(shù)棺克。

>> I=imread('bw_bacteria.bmp');
>> [L, num]=bwlabel(I,8);
>> num

num =

    22

>> Idil=imdilate(I,ones(3,3));
>> subplot(1,2,1),imshow(I),title('經(jīng)過二值化后的');
>> subplot(1,2,2),imshow(Idil),title('經(jīng)過膨脹后的');
>> [L, num]=bwlabel(Idil,8);
>> num

num =

    21

我們可以看到,由于二值化的閾值選取不當线定,導(dǎo)致某一個細菌在二值化后出現(xiàn)了“斷裂”娜谊,容易給計數(shù)造成困擾,因此對該圖像進行一個3×3結(jié)構(gòu)元素的膨脹斤讥,膨脹后發(fā)現(xiàn)斷裂接合了纱皆,則得到了準確的計數(shù)湾趾。


細菌計數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市派草,隨后出現(xiàn)的幾起案子搀缠,更是在濱河造成了極大的恐慌,老刑警劉巖近迁,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺普,死亡現(xiàn)場離奇詭異,居然都是意外死亡鉴竭,警方通過查閱死者的電腦和手機歧譬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搏存,“玉大人瑰步,你說我怎么就攤上這事¤得撸” “怎么了缩焦?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長责静。 經(jīng)常有香客問我舌界,道長,這世上最難降的妖魔是什么泰演? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任呻拌,我火速辦了婚禮,結(jié)果婚禮上睦焕,老公的妹妹穿的比我還像新娘藐握。我一直安慰自己,他們只是感情好垃喊,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布猾普。 她就那樣靜靜地躺著,像睡著了一般本谜。 火紅的嫁衣襯著肌膚如雪初家。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天乌助,我揣著相機與錄音溜在,去河邊找鬼。 笑死他托,一個胖子當著我的面吹牛掖肋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赏参,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼志笼,長吁一口氣:“原來是場噩夢啊……” “哼沿盅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纫溃,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤腰涧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后紊浩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體南窗,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年郎楼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窒悔。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡呜袁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出简珠,到底是詐尸還是另有隱情阶界,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布聋庵,位于F島的核電站膘融,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祭玉。R本人自食惡果不足惜氧映,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脱货。 院中可真熱鬧岛都,春花似錦、人聲如沸振峻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扣孟。三九已至烫堤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凤价,已是汗流浹背鸽斟。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留利诺,地道東北人湾盗。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像立轧,于是被迫代替她去往敵國和親格粪。 傳聞我的和親對象是個殘疾皇子躏吊,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容