ホームページ  >  記事  >  バックエンド開発  >  極大値フィルタリングを使用して、犬の足を表す 2D 配列内の圧力ピークを特定するにはどうすればよいでしょうか?

極大値フィルタリングを使用して、犬の足を表す 2D 配列内の圧力ピークを特定するにはどうすればよいでしょうか?

DDD
DDDオリジナル
2024-11-04 09:25:30775ブラウズ

How can local maximum filtering be used to identify pressure peaks in a 2D array representing a dog's paw?

2D アレイでのピーク検出

課題:

2D アレイでのピークの検出犬の足の下の圧力測定値を表し、解剖学的部分領域を描写します。

解決策:

実際的な解決策には、極大フィルターを使用してピークを識別することが含まれます。方法は次のとおりです:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage.filters import maximum_filter
from scipy.ndimage.morphology import generate_binary_structure, binary_erosion

# Define the paw data
paw_data = np.loadtxt("paws.txt").reshape(4, 11, 14)

# Define the 8-connected neighborhood
neighborhood = generate_binary_structure(2, 2)

# Function to detect peaks
def detect_peaks(image):
    # Local maximum filter
    local_max = maximum_filter(image, footprint=neighborhood) == image
    
    # Create a mask of the background
    background = (image == 0)
    
    # Erode the background to remove artifacts
    eroded_background = binary_erosion(background, structure=neighborhood, border_value=1)
    
    # Final mask containing only peaks
    detected_peaks = local_max ^ eroded_background
    
    return detected_peaks

# Detect peaks for each paw
paws = [p.squeeze() for p in np.vsplit(paw_data, 4)]
detected_peaks_list = []
for paw in paws:
    detected_peaks = detect_peaks(paw)
    detected_peaks_list.append(detected_peaks)

# Plot the results
fig, axs = plt.subplots(4, 2, figsize=(10, 10))
for i, paw in enumerate(paws):
    axs[i, 0].imshow(paw)
    axs[i, 0].set_title("Paw Image")
    axs[i, 1].imshow(detected_peaks_list[i])
    axs[i, 1].set_title("Peak Detection")

plt.tight_layout()
plt.show()</code>

考慮事項:

  • このアプローチは背景がきれいであることを前提としており、ノイズの多いデータには適さない可能性があります。
  • 近傍サイズは、ピーク サイズに基づいて調整する必要がある場合があります。
  • さらなる分析には、scipy.ndimage.measurements.label を使用して個別のオブジェクト (ピーク) にラベルを付けることが含まれます。

以上が極大値フィルタリングを使用して、犬の足を表す 2D 配列内の圧力ピークを特定するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。