[英]How to find the dynamic central points of an image in matlab?
我有一個名為original
的矩陣,相應的圖顯示在下圖中。
但是,我想以各行的形式將圖像的中心部分放入另一個變量中,如下圖所示。
我抬頭尋找中心,並了解在regionprops
中使用centroid
的方法。 例如下面的代碼示例。
s = regionprops(original,'centroid');
centroids = cat(1, s.Centroid);
plot(centroids(:,1),centroids(:,2), 'b*')
這種使用centroid
方法並沒有幫助我獲得整個中央行。 有其他替代方法嗎?
計算每列平均非零索引的一種方法是直接計算它。
編輯:目前尚不清楚噪聲的含義,但是如果我將其解釋為僅考慮每列的最寬區域,則可以找到該區域的平均值,如下所示。
avg = zeros(1,size(original,2));
for c = 1:size(original,2)
% find largest contiguous region in the column
sig = original(:,c);
der = diff([false; sig; false]);
upedge = find(der == 1);
downedge = find(der == -1);
[~,region_idx] = max(downedge-upedge);
first = upedge(region_idx);
last = downedge(region_idx)-1;
% get the average index in the region
avg(c) = (last + first) / 2;
end
% plot results
hold off;
imagesc(original); hold on;
plot(1:size(original,2), avg, '-r', 'LineWidth', 2);
set(gca, 'YDir', 'normal');
axis([1, size(original,2), 1, 250]);
結果如下圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.