ich hätte da mal eins, zwei Fragen und hoffe Ihr könnt mir helfen.
Im Anhang habe ich ein Plot dargestellt, der die Kanten mit edge erkennt.
Erste Frage: Gibt es eine Möglichkeit die erkannten Kanten außerhalb des Bauteils zu entfernen ?
Zweite Frage: Die inneren erkannten Kanten sind Risse, diese möchte ich nun gerne hervorheben. Gibt es die Möglichkeit diese Flächen auszufüllen und anschließend durch einen Befehl zu erkennen? Sozusagen eine Aussage zu treffen, es befinden sich Risse in dem Bauteile an den Koordinaten (x,y).
Hier auch nochmal der Code:
Code:
% Matrix zuschneiden figure(2)
B = M(403:544,99:786); % Bereich aus der Matrix M ausschneiden pcolor(B);
shading flat;
colorbar axis off
% Bereiche figure(4)
ii=B<56; % Suchen aller Werte aus B die kleiner als 56 sind
B(ii)=-1000;
D = B;
pcolor(D);
shading flat;
colorbar axis off
ich kann im Moment leider dein Bild nicht laden, aber unabhängig von einer Probe gibt es folgende Probleme. Immer wenn Störsignale die gleiche Ausdehnung von Bildsignalen haben, wird es schwierig bis unmöglich, diese automatisch zu löschen. Das ist in deinem Fall so. Bildsignale im Innern des Umrandung sind in etwa gleich groß wie Störsignale außerhalb dieser Umrandung. Da hilft auch kein Verfahren, wie z.B. edgetaper, dass von den äußeren Kanten nach innen wirkt.
Selbst wenn man versucht, Bereiche farbig zu codieren und dann die Farben wieder löscht, wird sich nichts ändern. Das alles ginge nur, wenn ein Verfahren nur in bestimmten Regionen wirksam wird. Dann könnte man aber gleich von Hand löschen.
Da die Störsignale nicht periodisch sind, hilft auch die FFT nicht weiter. Im Moment fällt mir dazu keine Lösung ein. Das heißt aber nicht, dass irgendwer nicht doch noch eine Idee hat!!
Viele Grüße - Hubertus
Lux
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.04.2014, 07:38
Titel:
Schonmal Danke für deine Antwort.
Das ist ja nicht so schlimm wenn die Störsignale bleiben, wichtig ist für mich nur, die Risse innerhalb des Bauteiles.
Ich habe jetzt schon google durchsucht und nichts gefunden.
Mein Schwerpunkt liegt darin, dass Ich die Risse durch Matlab erkennen lassen will.
Kann mir diesbezüglich jemand weiterhelfen ??
Ich habe mir schon überlegt, dass Kanten image zu speichern und mit einer Bildverarbeitung weiterzuarbeiten, doch bin ich da auch noch nicht weiter gekommen.
So wie ich das sehe, haben die Störungen außerhalb des Bauteils, die Risse und auch die Bautailkante immer eine geschlossene Kante?
Wenn ja, könntest du die Kantenverläufe für jedes geschlossene Objekt detektieren und jeweils in einer Matrix speichern.
Das größte geschlossene Objekt ist das Bauteil. (falls es immer das selbe Objekt ist, oder das Objekt sogar jedesmal gleich liegt, kann man zusätzlich noch eine "Normalmatrix" erstellen, in der man hinterlegt, wie das Bauteil ideal aussieht, dies abziehen und somit gleich nur noch risse und störungen erkennen.)
Von diesen bekannten Bauteilgrenzen aus läßt sich dann bewerten, ob ein weiteres gefundenes Objekt sich im inneren (=Riß) oder äußeren (= andere Störung) der Bautteilgrenze befindet und so entsprechend bewerten/anzeigen/einfärben...
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Lux
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.04.2014, 08:19
Titel:
Die haben teilweise geschlossene Kanten, meistens fehlt nur ein Pixel, dass könnte ich aber durch verändern des Schwellwertes (56) eventuell noch beheben.
Das Bauteil ist immer das gleiche und befindet sich immer an der gleichen Stelle.
Deine Ideen finde ich ziemlich gut, da ich noch nicht so der Experte bin muss ich jetzt nochmal nachlesen, wie ich das Umsetzen kann.
Das Bauteil ist immer das gleiche und befindet sich immer an der gleichen Stelle.
Denn könntest du ja zusätzlich noch über mehrere Bilder mitteln, was die Bauteilgrenze angeht.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Lux
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.04.2014, 10:15
Titel:
Ich habe jetzt eine Normalmatrix erstellt und diese dann Abgezogen, somit bekomme ich nur noch die Störstellen und Risse.
Da mich nur die Risse interessieren könnte ich doch rein theoretisch, den Bereich um das Bauteil füllen und diese Matrix dann abziehen. Dadurch sollten meine Störstellen doch entfernt werden.
Ich habe jetzt eine Normalmatrix erstellt und diese dann Abgezogen, somit bekomme ich nur noch die Störstellen und Risse.
Da mich nur die Risse interessieren könnte ich doch rein theoretisch, den Bereich um das Bauteil füllen und diese Matrix dann abziehen. Dadurch sollten meine Störstellen doch entfernt werden.
Ja, sollte gehen - oder was war die Frage?
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Lux
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.04.2014, 10:54
Titel:
Habe es Beispielhaft versucht und es klappt.
Gibt es eine Möglichkeit mithilfe eines Befehls, alles um die Kanten zu füllen?
Es ist mir zwar nicht klar, worauf es ankommt (hört sich manchmal widersprüchlich an), aber du kannst ja mal folgendes versuchen und feststellen, ob das der richtige Weg ist:
Code:
BW1=imread(Bild);
BW!=rgb2gray(BW1);
SE=strel('line',14,14);
BW2=imclose(BW1,SE);
BW3=imdilate(BW2,SE);
[L,n]=bwlabel(BW3);
RGB=label2rgb(L,'spring','c','shuffle');
figure; imshow(RGB)
stats=regionprops(L) hold on
for i=1:length(stats) text(stats(i).Centroid(1),stats(i).Centroid(2),num2str(i)) end
Gibt es eine Möglichkeit mithilfe eines Befehls, alles um die Kanten zu füllen?
Mir fällt spontan Watershed ein, aber das ist ehr, um die Kanten zu finden.
Du könntest evt. mit morphologischen Operatoren probieren.
Imclose könnte recht gute Dienste leisten, so du die Toolbox hast.
Damit füllst du die kleinen geschlossenen Störungen/Risse. Wenn du den Pixeln im "gefüllten" Bild dann eine andere Farbe zuweist und die Kanten drüberlegst, sollte das recht nett aussehen zur veranschaulichung.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Lux hat Folgendes geschrieben:
Habe es Beispielhaft versucht und es klappt.
Gibt es eine Möglichkeit mithilfe eines Befehls, alles um die Kanten zu füllen?
Mir fällt spontan Watershed ein, aber das ist ehr, um die Kanten zu finden.
Du könntest evt. mit morphologischen Operatoren probieren.
Imclose könnte recht gute Dienste leisten, so du die Toolbox hast.
Code:
imclose
Funktion ohne Link?
Damit füllst du die kleinen geschlossenen Störungen/Risse. Wenn du den Pixeln im "gefüllten" Bild dann eine andere Farbe zuweist und die Kanten drüberlegst, sollte das recht nett aussehen zur veranschaulichung.
Ich habe es mit imgclose probiert, der code sieht wie folgt aus:
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
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.