|
|
rekursive region-growing Funktion |
|
Foxtrot |

Forum-Newbie
|
 |
Beiträge: 1
|
 |
|
 |
Anmeldedatum: 24.06.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.06.2015, 11:45
Titel: rekursive region-growing Funktion
|
 |
|
 |
|
Guten Tag,
Ich habe mich daran versucht für eine Projektarbeit für meine Hochschule einen region growing Algorithmus zum Laufen zu bringen.
Ich habe allerdings noch ein kleineres und ein größeres Problem.
Der Schwellwert für das hinzufügen weiterer Pixel an eine Region wird über eine kleine Betragsrechnung gebildet. Je nachdem welche Grauwerte ich segmentiere, funktioniert das besser oder schlechter.
Zu finden is diese Rechnung in Zeile 6 der Rekursivfunktion "Nachbarsuche"
Das zweite Problem ist, dass meine Rekursivfunktion nicht oft genug aufgerufen werden kann. Bei einem Bild von etwa 100 auf 200 Pixel ist es nicht möglich eine etwa 20x20 Pixel große Stelle zu segmentieren. Diesen Wert der angibt wie oft die Funktion durchlaufen darf, konnte ich von 500 (standard) auf etwa 1200 erhöhen bevor Matlab abstürzt. Gibt es noch weitere Mögichkeiten diesen Wert zu erhöhen? Besonders komplex ist die Funktion ja nun eigentlich nicht.
Ich hoffe jemand hier besitzt die Muse mir zu helfen.
Ich weiß nicht mehr an wen ich mich noch wenden kann.
Hier die beiden Funktionen region_growing (hauptfunktion) und Nachbarsuche (rekursivfunktion).
Auch im Anhang als .m File. Sowie einige Testbilder.
Zitat: |
%I=Input Image
%T=Tolerance of threshold in percent
%O=Output
%ZZmain=Navigator through Liste
%S=Threshold
function [O] = region_growing(I,T)
set(0,'RecursionLimit',2000)
T=0;
if T==0
T=30;
end
%TO DO GUI: If Input Threshold if empty, standard Threshold is 30
I=imread(I); %Read Input Image
I=I(:,:,1);
%Erzeugung von weißem Rahmen
[x, y, ~]=size(I);
I2=ones(y+2,x+2);
I2=uint8(I2);
I2=I2*255;
for j = 1:1:x
for k = 1:1:y
I2(j+1,k+1)=I(j,k);
end
end
I=I2;
imtool(I);
%Threshold percent 2 numeric
S=T*255/100;
figure; imshow(I); %Show Input Image
[xcoord,ycoord]=ginput(1); %Create seedpoint
xcoord=round(xcoord);
ycoord=round(ycoord);
Liste=[0 0];
ZeilenZaehler=1;
[ListeRueck, ZZreturn] = NachbarSuche(xcoord, ycoord, I, S, Liste, ZeilenZaehler)
Zitat: |
function [ListeRueck, ZZreturn] = NachbarSuche(xcoord, ycoord, I, S, Liste, ZeilenZaehler)
h=-1;
j=-1;
for h=-1:1:1
for j=-1:1:1
if abs(I(xcoord+h,ycoord+j) - I(xcoord,ycoord)) < S % Schwellwertausschlusskriterium
if ismember([xcoord+h ycoord+j], Liste, 'rows')~=1
Liste(ZeilenZaehler,1)=xcoord+h;
Liste(ZeilenZaehler,2)=ycoord+j;
ZeilenZaehler=ZeilenZaehler+1;
[ListeRueck, ZZreturn]=NachbarSuche(xcoord+h, ycoord+j, I, S, Liste, ZeilenZaehler);
Liste=ListeRueck;
ZeilenZaehler=ZZreturn;
end
end
end
end
ZZreturn=ZeilenZaehler;
ListeRueck=Liste;
end
|
Ibunt=cat(3,I,I,I); %Initialisierung RGBbild
ZZmain=1; %ZeilenZaehler der Hauptfunktion zum Abruf der Koordinaten aus der Liste
i=1;
for i = 1:1:ZZreturn-1 %Abfragen Listeneinträge
x=ListeRueck(ZZmain,1);
y=ListeRueck(ZZmain,2);
Ibunt (x,y,1)=0; %Einfärben
Ibunt (x,y,2)=200;
Ibunt (x,y,3)=220;
ZZmain=ZZmain+1;
end
O=Ibunt;
imtool(O);
clear Liste;
clear ListeRueck;
end |
Gruß
Beschreibung: |
|
 Download |
Dateiname: |
test2.png |
Dateigröße: |
250 Bytes |
Heruntergeladen: |
192 mal |
Beschreibung: |
|
 Download |
Dateiname: |
9t.PNG |
Dateigröße: |
25.26 KB |
Heruntergeladen: |
229 mal |
Beschreibung: |
|
 Download |
Dateiname: |
NachbarSuche.m |
Dateigröße: |
815 Bytes |
Heruntergeladen: |
241 mal |
Beschreibung: |
|
 Download |
Dateiname: |
region_growing.m |
Dateigröße: |
1.41 KB |
Heruntergeladen: |
243 mal |
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|