Mahotas - 影像中的區域性最大值



區域性最大值是指影像中畫素或特定區域,其強度或值高於其相鄰畫素或區域。它表示影像資料中的峰值或高點。

查詢區域性最大值的一種方法是執行區域性鄰域分析。對於影像中的每個畫素,都會檢查其鄰域,如果該畫素在其鄰域內最大,則將其視為區域性最大值。

Mahotas 中的影像區域性最大值

我們可以使用 **locmax()** 函式在 Mahotas 中找到影像中的區域性最大值。它以影像作為輸入,並返回一個二進位制掩碼,其中區域性最大值標記為 True 或 1。

Mahotas 中的 local_maxima() 函式使用非最大抑制演算法來有效地定位區域性最大值。透過檢查每個畫素及其鄰域,該函式確定該畫素是否在其區域性區域內最大。

此分析允許檢測影像資料中的峰值或高點,這對於各種應用(例如特徵提取、物件檢測和影像分割)都起著重要作用。

非最大抑制演算法用於物件檢測和邊緣檢測任務,透過在相鄰畫素中選擇最高強度或響應值來消除冗餘和弱檢測,從而僅保留區域性最大值並抑制非最大值。

使用 locmax() 函式

Mahotas 中的 locmax() 函式用於有效地識別輸入影像中的區域性最大值。它以灰度或單通道影像作為輸入,並返回一個二進位制掩碼,其中區域性最大值標記為 True 或 1。

語法

以下是 mahotas 中 locmax() 函式的基本語法:

mahotas.Locmax(image_name)

其中,**'image_name'** 是輸入影像。

示例

以下是查詢影像中區域性最大值的基本示例:

import mahotas as mh
import numpy as np
from pylab import imshow, show
import matplotlib.pyplot as plt
image = mh.imread('nature.jpeg', as_grey=True)
maxima = mh.locmax(image)
print("Maxima:", maxima)
imshow(maxima)
show()
輸出

以下是上述程式碼的輸出:

Maxima: [[ True True True ... True True True]
[ True True True ... True True True]
[ True True True ... True True True]
...
[False False False ... False False False]
[False False False ... False False True]
[ True False True ... False False True]]

顯示的影像如下所示:

Local Maxima Image

使用 regmax() 函式

我們也可以使用 Mahotas 中的 regmax() 函式來查詢影像中的區域最大值。區域最大值定義為影像中的一點,其強度值高於其在指定區域內所有相鄰畫素的強度值。

regmax() 函式接受影像作為輸入引數,並返回與輸入影像大小相同的布林影像。

以下是 mahotas 中 regmax 函式的基本語法:

regmax(image)

其中,**'image'** 是需要識別區域最大值的灰度或彩色影像。

示例

在這裡,我們嘗試使用 regmax() 函式在灰度影像的連通區域內查詢區域最大值:

import mahotas as mh
def find_local_maxima(image):
   regional_maxima = mh.regmax(image)
   return regional_maxima
image = mh.imread('sun.png', as_grey=True)
local_maxima_points = find_local_maxima(image)
print(local_maxima_points)

輸出

上述程式碼的輸出如下:

[[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... True False False]]

彩色影像的區域最大值

我們還可以使用 regmax() 函式在 **彩色** 影像的連通區域內查詢區域最大值。

示例

現在,我們嘗試使用 regmax() 函式在彩色影像的連通區域內查詢區域最大值:

import mahotas as mh
def find_local_maxima(image):
   regional_maxima = mh.regmax(image)
   return regional_maxima
image = mh.imread('tree.tiff')
local_maxima_points = find_local_maxima(image)
print(local_maxima_points)

輸出

我們得到如下輸出:

[[[False False False]
[ True True True]
[False False False]
...
[False False False]
[False False False]
[False False False]]
.
.
.
[False False False]
[False False False]
[ True False False]]]
廣告