如何使用MATLAB查詢二值影像的內部和外部骨架?


在二值影像中,內部和外部骨架用於表示影像中物體和形狀的基本結構。在本文中,我將解釋使用MATLAB查詢二值影像內部和外部骨架的過程。

在討論查詢二值影像內部和外部骨架的過程之前,讓我們首先概述這兩種型別的骨架。

什麼是二值影像的內部骨架?

在二值影像中,“內部骨架”表示前景物體的中心線。它基本上是二值影像中物體或形狀的細化表示。

  • 我們可以透過反覆從二值形狀和物體中去除畫素來獲得二值影像的內部骨架,從而獲得其單畫素寬的表示。

  • 在各種影像處理任務中,查詢二值影像的內部骨架至關重要,例如目標識別、形狀分析、特徵提取等等。

什麼是二值影像的外部骨架?

在二值影像中,背景的骨架稱為“外部骨架”。換句話說,二值影像的外部骨架就是二值影像中物體或形狀之間區域的骨架。

  • 我們可以簡單地透過取二值影像的補集,然後找到補集二值影像的內部骨架來找到二值影像的外部骨架。

  • 外部骨架表示關於二值影像中不同形狀或物體之間連線的資訊。

這就是關於二值影像內部和外部骨架的基本知識。這兩種骨架在各種影像處理任務中都非常有用,例如模式識別、形狀分析、結構分析等等。

現在讓我們討論使用MATLAB查詢二值影像內部和外部骨架的過程。

在MATLAB中查詢二值影像的內部骨架

在MATLAB中,我們按照以下步驟查詢二值影像的內部骨架。

  • 步驟(1) - 讀取二值影像。為此,我們使用“imread”函式。

binary_img = imread(ImagePath);
  • 步驟(2) - 查詢輸入二值影像的內部骨架。為此,我們使用“bwmorph”函式和“skel”選項執行形態學運算以查詢影像的骨架。

interior_skeleton = bwmorph(binary_img, 'skel', Inf);
  • 步驟(3) - 顯示結果。

示例

讓我們現在在MATLAB中舉一個例子來理解這些步驟的實現。(此處應插入MATLAB程式碼示例)

% MATLAB code to find interior skeleton of binary image
% Read the input image
img = imread('https://tutorialspoint.tw/assets/questions/media/14304-1687425236.jpg');

% Convert the input image to grayscale if required
gray_img = rgb2gray(img);

% Create the binary image
binary_img = imbinarize(gray_img);

% Find the interior skeleton of binary image
interior_skeleton = bwmorph(binary_img, 'skel', Inf);

% Display the binary image and its interior skeleton
figure;
subplot(1, 2, 1)
imshow(binary_img)
title('Binary Image');

subplot(1, 2, 2)
imshow(interior_skeleton)
title('Interior Skeleton');

輸出

執行此程式碼時,它將生成以下輸出 - (此處應插入輸出影像)

解釋

在這個例子中,我們已經確定了輸入二值影像的內部骨架。這段程式碼在開頭有兩個額外的步驟。我們讀取的是RGB影像,因此需要先將其轉換為灰度影像,然後建立其二值影像。

此二值影像的內部骨架顯示在標題為“內部骨架”的輸出影像中。為了獲得更好的結果,您可以使用不同的影像嘗試此程式碼。如果您的輸入影像已經是二值影像,則跳過轉換為灰度影像和建立二值影像的步驟。

現在讓我們討論使用MATLAB查詢二值影像外部骨架的過程。

在MATLAB中查詢二值影像的外部骨架

在MATLAB中,需要按照以下步驟查詢二值影像的外部骨架。

  • 步驟(1) - 使用“imread”函式讀取二值影像。

語法

binary_img = imread(ImagePath);
  • 步驟(2) - 對此輸入二值影像取補集。

  • 步驟(3) - 使用“bwmorph”函式查詢補集二值影像的內部骨架。輸出將是二值影像的外部骨架。

語法

exterior_skeleton = bwmorph(comp_bin_img, 'skel', Inf);
  • 步驟(4) - 顯示結果。

示例

讓我們在MATLAB中看一個例子來理解查詢二值影像外部骨架的步驟的實現。(此處應插入MATLAB程式碼示例)

% MATLAB code to find exterior skeleton of binary image
% Read the input image
img = imread('https://tutorialspoint.tw/assets/questions/media/14304-1687425236.jpg');

% Convert the input image to grayscale if required
gray_img = rgb2gray(img);

% Create the binary image
binary_img = imbinarize(gray_img);

% Complement the binary image
comp_bin_img = ~binary_img;
% Perform morphological operation to find exterior skeleton
exterior_skeleton = bwmorph(comp_bin_img, 'skel', Inf);

% Display the binary image and its exterior skeleton
figure;
subplot(1, 2, 1)
imshow(binary_img)
title('Binary Image');

subplot(1, 2, 2)
imshow(exterior_skeleton)
title('Exterior Skeleton');

輸出

執行此程式碼時,它將生成以下輸出 - (此處應插入輸出影像)

解釋

在這個例子中,我們已經獲得了輸入影像的外部骨架。這裡的步驟與內部骨架相同。唯一的區別是我們首先計算二值影像的補集以交換黑白畫素。然後,我們找到補集影像的內部骨架,這基本上就是外部骨架。

結論

總之,二值影像的內部和外部骨架是兩種不同的表示,它們顯示了影像中物體和形狀的結構。

內部骨架表示前景物體的中心線,而外部骨架突出顯示影像背景的骨架。

在本教程中,我解釋了使用MATLAB查詢二值影像內部和外部骨架的分步過程。我還包含示例程式,以便更好地理解步驟的實現。

更新於:2023年10月5日

瀏覽量:122

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.