一、bwboundaries函數返回值
在Matlab中,bwboundaries函數用於尋找二值圖像中物體的邊緣。該函數返回一個細胞數組,每個元素對應一個物體的邊緣點坐標集合。具體而言,bwboundaries函數獲取的是連接二值圖像(即只有0和1兩種值的圖像)中的前景圖像的邊緣。
% 示例代碼
% 對於以下的二值圖像bw,有兩個物體,分別用0和1表示
bw = zeros(8,8);
bw(2:3,2:4) = 1;
bw(5:7,5:7) = 1;
% 調用bwboundaries函數尋找bw中前景圖像的邊緣
B = bwboundaries(bw);
% 此時B為一個大小為2的細胞數組,每個元素都是一個大小若干的二維數組,表示對應一個物體的邊緣坐標
二、bwboundaries函數介紹
bwboundaries函數採用的是基於邊界跟蹤演算法,其中最常用的是Moore-Neighbor Tracing演算法。該演算法的步驟如下:
1、尋找圖像中前景像素f的第一個非孤立像素n,設該像素坐標為(nrow, ncol)。
2、從n開始,按照順時針的方向對f進行跟蹤,記錄下所有經過的像素。若當前點的4鄰域內還有未跟蹤的前景像素,則順時針旋轉90度繼續跟蹤(也就是說,沿著外輪廓的像素必須是連續的,不能存在跳躍現象)。
3、如果又在外輪廓跟蹤到了起始像素n,那麼這個外輪廓就是跟蹤完成了。否則,跟蹤還未完成,重複步驟2。
需要注意的是,當存在多個物體時,該演算法只會跟蹤到每個物體的最外輪廓邊緣。
三、bwboundaries中文意思
bwboundaries函數的名稱可以分為兩部分,bw代表二值圖像,而boundaries則可以理解為邊界的複數形式,表徵了該函數的主要作用
四、bwboundaries函數邊緣檢測選取
在使用bwboundaries函數時,需要注意二值圖像的像素值只有0和1兩種,因此圖像通常需要進行二段處理或者採用圖像分割的方法得到。至於二值圖像的選取方式,在實際應用中,常根據不同場景下的需要,採用不同的圖像分割演算法,例如全局和局部閾值分割等。
我們在之前的示例中已經提到了關於圖像選取的方式,實現代碼如下:
bw = zeros(8,8);
bw(2:3,2:4) = 1;
bw(5:7,5:7) = 1;
這種方式是通過手動設置二值圖像像素值來實現的,而在實際應用中,圖像通常是通過圖像處理工具箱中的函數或者自行編寫的演算法得到。
除了以上所述的這些方面外,bwboundaries函數還涉及到很多細節和注意事項,如果想要更深入地了解該函數,建議大家還是需要閱讀官方文檔或者相關的書籍和論文。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245774.html