[英]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.