2016-06-05 21 views
0

Ich habe ein Binärbild, das ich verwendet habe, um bconncomp und regionprops in Bereiche von Interesse zu teilen. Ich habe eine Reihe von Pixeln, die ich über das binäre Bild legen möchte ... und finde heraus, welche Region von Interesse/verbundener Komponente die meisten Linienpixel enthält. Also verwende ich in dem angehängten Bild bconncomp auf bwimage, ich bekomme Komponenten 1,2,3. Dann habe ich eine Liste von Pixeln, die der blauen Linie entsprechen. Ich möchte herausfinden, welche verbundene Komponente den größten Teil der blauen Linie enthält (# 1).MATLAB: Finden Sie verbundene Komponente nach Pixel-Position im Binärbild

Ich stelle mir vor, es ist etwas wie ...

line=(some pixel values); 
cc=bwconncomps(bwimage); 
tempvar=[]; 

for i=1:length(bwconncomps) 
    tempvar=find(cc.PixelIdxList{i}==line); 
end 

[~ answer]=max(tempvar); 

Antwort

0

können Sie ismember verwenden, um zu bestimmen, wie viele Elemente in PixelList in Ihrer Liste von Pixeln auftreten, die entlang der Linie liegen. Dann können Sie max verwenden, um die Komponente zu identifizieren, die am meisten aufweist.

% Indices of pixels that are along the line of interest 
linePixels = [1, 2, 3, 4, ...] 

% Determine the number of pixels within each component that are on this line 
nPerComponent = cellfun(@(inds)sum(ismember(inds, linePixels)), {cc.PixelIdxList}); 

% Find the component with the most points on this line 
[~, answer] = max(nPerComponent); 
+0

Ich habe Probleme, dies funktioniert: "Index überschreitet Matrix Dimensionen". Der Cyan war nur zur Veranschaulichung meiner Frage - in Wirklichkeit habe ich nur das Binärbild und dann einen Index von Werten für die Linie - diese haben das gleiche Format wie bwconncomps PixelIdxList (dh in einem 200x200 Pixel Bild das erste Pixel in der zweiten Spalte) wäre "201" nicht "1,2") – user3470496

+0

@ user3470496 Ah ok. aktualisierte Antwort. – Suever

+0

Ich bekomme immer noch den Fehler "Eingabe # 2 erwartet, Zell-Array zu sein, wurde stattdessen doppelt" ... Entschuldigung wahrscheinlich einfache Lösung, aber ich vermisse es – user3470496