>  기사  >  백엔드 개발  >  개 발을 나타내는 2D 배열에서 압력 피크를 식별하기 위해 로컬 최대 필터링을 어떻게 사용할 수 있습니까?

개 발을 나타내는 2D 배열에서 압력 피크를 식별하기 위해 로컬 최대 필터링을 어떻게 사용할 수 있습니까?

DDD
DDD원래의
2024-11-04 09:25:30773검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.