我使用連接組件標記算法(bwconncomp)來標記二進制圖像(MATLAB)的不同部分。現在我需要計算不同標籤的面積並刪除面積較小的標籤。我可以使用默認的區域發現的命令或有任何特定命令的,在MATLAB ...幫助..查找圖像的區域
查找圖像的區域
回答
CC = bwconncomp(BW)返回連接的組件CC發現在BW。 二進制圖像BW可以具有任何維度。 CC是與 四個字段的結構...
在CC的最後字段是PixelIdxList
,它是:
並[a] 1 * NumObjects細胞陣列,其中在第k個元素單元陣列是包含第k個對象中像素的線性索引的向量。
您可以通過查看單元格數組中相應條目的長度來找到每個標籤的區域。喜歡的東西:
areas_in_pixels = cellfun(@length, CC.PixelIdxList);
的PixelIdxList是一個單元陣列,其中每個部分包含存在於連接的組件中的像素的線性索引。上面的代碼行找出單元陣列中每個單元的長度 - 即每個連接的單元中的像素數量。我使用cellfun
來保持代碼簡潔高效。寫同樣的事情,不同的方式會是這樣的:
areas_in_pixels = nan(1, length(CC.PixelIdxList);
for i = 1:length(CC.PixelIdxList)
areas_in_pixels(i) = length(CC.PixelIdxList{i});
end
對於每個連接的組件,你就可以找到該組件的大小以像素爲單位通過訪問areas_in_pixels元素:
areas_in_pixels(34) %# area of connected component number 34
你能否詳細說一下功能? – meena 2012-01-31 14:21:04
我已經提供了一些更多的細節。這是你的意思的功能? – 2012-01-31 14:43:24
如果你不想寫很多像上面這樣的代碼,只需使用MATLAB的內置函數來檢測區域。標記您的組件並從組件的屬性中找出該組件的區域。假設BW是二進制圖像:
[B,L] = bwboundaries(Bw,'noholes');
stats = regionprops(L,'Area','perimeter');
for k = 1:length(B)
area(k)=stats.Area;
end
感謝您的回答.. :) – meena 2012-02-04 18:44:04
+1好吧,公平這是你應該怎麼做... – 2012-02-08 18:33:47
您可以通過避免for循環具有以下使這更好:
[B,L] = bwboundaries(Bw,'noholes');
stats = regionprops(L,'Area','perimeter');
area = [stats.Area];
最佳, - 將會
- 1. 查找圖像中的空白區域
- 2. Javascript - 查找圖像的最暗區域
- 3. MATLAB圖像處理 - 查找圖像的邊緣和區域
- 4. 在圖像上查找區域 - 自動旋轉圖像OpenCv
- 5. 在圖像查找空白區域,以填補另一圖像
- 6. 使用Capybara查找圖像地圖區域
- 7. 如何在位圖圖像中查找空白區域
- 8. 查找包含點的地圖區域
- 9. 如何在opencv中查找圖像之間的重疊區域?
- 10. 在圖像中查找相似顏色的區域
- 11. 在圖像上查找最受歡迎的區域
- 12. 查找圖像的矩形區域作物
- 13. 查找圖像中的局部最小區域
- 14. 查找兩個圖像之間的不同區域
- 15. 設置區域內的查找/查找
- 16. 使用Java在圖像上查找匹配圖像模式座標的區域
- 17. 在ImageMagick alpha圖像中查找邊界區域
- 18. Python OpenCV - 在二進制圖像中查找黑色區域
- 19. 如何查找位置X和Y(圖像,區域)
- 20. C#在圖像中查找綁定區域
- 21. 自動查找和裁剪相關圖像區域
- 22. 選擇圖像的區域
- 23. 查找基因間區域
- 24. 使用CGContextEOFillPath查找區域
- 25. 查找圖像標籤,並用域名
- 26. 複製圖像中的像素區域
- 27. 將圖像分成區域
- 28. JQuery圖像選擇區域
- 29. 圖像溢出div區域
- 30. 可點擊區域圖像
此[鏈接](HTTP ://blogs.mathworks.com/steve/2009/02/27/using-ismember-with-the-output-of-regionprops/)是我真正在尋找..感謝條例草案 – meena 2012-02-02 07:41:32