2013-06-13 40 views
0

在Matlab中,我一直在努力解決問題。 我有一個圖像(A.tif),我想在其中找到最大值(具有定義的閾值),但是這些最大值的更具體的座標。我的目標是像穿越這些最大值上創建短型材(讓說的+ - 的最大兩側20個像素) 我嘗試這樣做:在圖像的某些部分創建圖像配置文件

[r c]=find(A==max(max(A))); 

我想這rc是最大的座標(只有一個/第一個或每個最大值?) 如何實現這些座標,例如improfile函數? 我認爲應該使用嵌套循環完成?

感謝每一個建議

您的代碼工作,但它發現只有全球最大coordinates.I想找到多個最大值(與定義的閾值),並妥善解決其座標以創建多個配置文件渡找到的每個最大值。我有一個小的問題,用於導入文件功能:

improfile(IMAGE,[起始點],[結束點])。

可以說我得到了每個最大座標的[rows,columns]矩陣,我試圖創建一個方向輪廓,它在最大值(最大值前約20像素)的同一行開始,當然也結束在同一行(距離最大約20個像素)。

這是正確的表達式:improfile(IMAGE,[rows columns-20],[rows columns + 20]);它繪製的東西,但它似乎只加入最大值,而不是使強度配置文件

回答

2

你沒有提供足夠的信息,所以我不得不猜測一些事情。你應該應用max()到矢量圖像和存儲索引:

[~,idx] = max(I(:)) 

然後將其轉化成xy座標:

[ix,iy] = ind2sub(size(I),idx) 

這是你的X,最大的圖像Y的。這真的取決於你想要的個人資料部分。像這樣的工作:

I = imread('peppers.png'); 
Ir = I(:,:,1); 
[~,idx]=max(Ir(:)) 
[ix,iy]=ind2sub(size(Ir),idx) 
improfile(Ir,[0 ix],[iy iy]) 

編輯:
如果你想應該找到k最大的價值,而不僅僅是最高你可以做一個簡單的排序:

[~,idx] = sort(I(:),'descend'); 
idxk = idx(1:k); 
[ix,iy] = ind2sub(size(I),idxk) 

請刪除你的「回覆」,而是編輯你原來的帖子,在那裏你更好地定義你的問題

+0

看到我的answear下面:) – user2481407

相關問題