Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah penapisan maksimum tempatan boleh digunakan untuk mengenal pasti puncak tekanan dalam tatasusunan 2D yang mewakili kaki anjing?

Bagaimanakah penapisan maksimum tempatan boleh digunakan untuk mengenal pasti puncak tekanan dalam tatasusunan 2D yang mewakili kaki anjing?

DDD
DDDasal
2024-11-04 09:25:30780semak imbas

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

Pengesanan Puncak dalam Tatasusunan 2D

Cabaran:

Mengesan puncak dalam tatasusunan 2D mewakili ukuran tekanan di bawah kaki anjing, untuk menggambarkan subkawasan anatomi.

Penyelesaian:

Penyelesaian praktikal melibatkan penggunaan penapis maksimum tempatan untuk mengenal pasti puncak. Begini caranya:

<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>

Pertimbangan:

  • Pendekatan ini menganggap latar belakang yang bersih dan mungkin tidak sesuai untuk data yang bising.
  • Saiz kejiranan mungkin perlu dilaraskan berdasarkan saiz puncak.
  • Analisis lanjut boleh melibatkan penggunaan scipy.ndimage.measurements.label untuk melabel objek yang berbeza (puncak).

Atas ialah kandungan terperinci Bagaimanakah penapisan maksimum tempatan boleh digunakan untuk mengenal pasti puncak tekanan dalam tatasusunan 2D yang mewakili kaki anjing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn