簡體   English   中英

如何在Matlab中找到圖像的動態中心點?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM