我使用連接組件標記算法(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. 如何在位圖圖像中查找空白區域
- 4. 使用Capybara查找圖像地圖區域
- 5. 查找兩個圖像之間的不同區域
- 6. 設置區域內的查找/查找
- 7. Python OpenCV - 在二進制圖像中查找黑色區域
- 8. 選擇圖像的區域
- 9. 查找基因間區域
- 10. 複製圖像中的像素區域
- 11. 圖像溢出div區域
- 12. 可點擊區域圖像
- 13. 圖像平移區域
- 14. JQuery圖像選擇區域
- 15. 查找圖像中太薄的區域,但不是尖端形狀的末端
- 16. 在圖像地圖中取消尋找jquery maphilight區域
- 17. 找到包圍黑色區域的圖像的寬度:Matlab
- 18. 用於在黑白圖像上查找未連接區域(島)的算法
- 19. WPF:查找圖像中的所有封閉區域(C#甚至是VB)
- 20. 如何使用opencv在matlab中查找彩色圖像的感興趣區域?
- 21. 查找字典中最大的區域
- 22. 查找區域內的所有元素
- 23. 查找特定區域內的輪廓
- 24. 查找矩陣中的區域..?
- 25. 查找三角形的區域
- 26. 扭曲點區域上的圖像區域?
- 27. 找到確切的圖像區域匹配
- 28. 高效地找到標記圖像區域的質心
- 29. Slick2d找不到圖像,即使它是在正確的區域
- 30. 查找圖像
此[鏈接](HTTP ://blogs.mathworks.com/steve/2009/02/27/using-ismember-with-the-output-of-regionprops/)是我真正在尋找..感謝條例草案 – meena 2012-02-02 07:41:32