簡體   English   中英

Matlab中的圖像處理工具箱

[英]image processing toolbox in matlab

我有一個特定的問題和一個相關的更籠統的問題...為什么imextendedmax()不能在A(3,3)中給出例如9的最大值? 通常...找到多個最大值/峰值的最佳方法是什么? 關於extended max的好處是,它允許一個閾值,該閾值可能不計算該閾值下的所有內容,而imregionalmax和findpeaks更為通用,效果較差。

A =輪(rand(5)* 10)

A =

 1     5     4     8     3
 5     1     8     8     3
 9     3     9     1     2
 9     7     3     5     9
 6     3     5     6     8

B =最大max(A,8)

B =

 1     1     1     1     1
 1     1     1     1     1
 1     1     1     1     1
 1     1     1     1     1
 1     1     1     1     1

據我了解, imextendedmax(A,x)首先抑制所有大於其周圍環境x或更小的最大值,然后調用imregionalmax

因此,您想打電話

imextendedmax(A,1)

ans =

     0     0     0     1     0
     0     0     1     1     0
     1     0     1     0     0
     1     0     0     0     1
     0     0     0     0     1

如果要查找圖像中x或大於x的所有區域,也可以調用(對於x = 8)

x = 8;
A >= x
ans =

         0     0     0     1     0
         0     0     1     1     0
         1     0     1     0     0
         1     0     0     0     1
         0     0     0     0     1

因此對圖像進行閾值處理。

最后,它實際上取決於您想要做什么。 如果您認為圖像具有峰谷,您是否想找到峰的位置? 然后使用imdilate進行局部最大值檢測(請參見下文)。 您是否想知道如果將所有東西都注滿水到x的水平,峰谷的哪些部分會保持干燥? 然后使用A>x等。


編輯

關於findpeaks道歉。 我以為您提到了它,因為它適用於2D,但我沒有檢查。 對於局部最大值檢測,一種非常好的方法是使用像這樣的imdilate

locMaxMask = A > imdilate(A,[1,1,1;1,0,1;1,1,1]);

對imdilate的調用會用周圍的最大像素替換每個像素。 因此,比較將產生具有比周圍的8個像素更高的值的所有像素。

關於噪音:您有一個類似的問題,所以我將您鏈接到我在那給出的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM