ich probiere mich seit einiger zeit in Matlab und komme gerade nicht weiter.
ich habe durch Kantenerkennung ein Selbst gezeichnetes Bild erkennen lassen. Dann durch
die Objekte die nicht vollständig auf dem Bild zusehen sind entfernen lassen.
zum Schluss lege ich die Erkannten Umrisse auf das original Bild, und speichere es. Doch leider Speichert er das Bild mit den Umrissen und auch den Sachen die eigentlich raus geschnitten (ausgefüllt) wurden.
Wie kriege ich es hin das ich nur das erkannte Bild speichern kann . also das die Sachen die entfernt wurden auf dem gespeicherten bild nicht vorhanden sind?
%Bild auswahl
bild = uigetfile({'*.jpg';'*.png';'*tif'},'Bitte Bildatei auswählen');
%Bild einlesen und in Schwarzweiß umwandeln
BWbild = rgb2gray(imread(bild));
%sobelfilter anwenden mit Faktor (segmentierung des Bildes)
edges = edge(BWbild, 'sobel', 0.05);
%imagesc(edges);
%bestimmt die dicke der Umrisse
strel90 = strel('line', 3, 0);
%bestimmt die wie viel ausgefüllt wird
strel0 = strel('line', 3, 0);
%erweitert die Kanten der Maske
BWkontur = imdilate(edges, [strel90 strel0]);
%figure, imshow(BWkontur), title('erweiterung der Maske');
%Füllt die Maske aus
BWfuellen = imfill(BWkontur, 'holes');
%figure, imshow(BWfuellen);
%title('Bildmaske gefüllt');
%Objekte die nicht vollständig auf dem Bild zu sehen sind werden
%gelöscht(ausgefüllt)
BWremove = imclearborder(BWfuellen,4);
%figure, imshow(BWremove), title('Fehlerhafte Objekte Löschen');
%Das segmentierte objekt wird zwei mal geglätet
%um störende Pixel zu entfernen
segmentedD = strel('diamond',1);
BWfertig = imerode(BWremove,segmentedD);
BWfertig = imerode(BWfertig,segmentedD);
BWfertig = imerode(BWfertig,segmentedD);
BWfertig = imerode(BWfertig,segmentedD);
%figure, imshow(BWfertig), title('Geglätetes Bild');
%Maske auf Origenalbild anwenden
BWumriss = bwperim(BWfertig);
umrisse = BWbild;
umrisse(BWumriss) = 255;
figure, imshow(umrisse), title('Umrisse original Bild');
Mir ist nicht klar, welches Endresultat du überhaupt suchst. Das Endresultat enthält doch bis auf die letzten Bereiche aus "umriss" die gleichen Inhalte wie anfangs. Mit "imfill" werden Kanten entfernt, die im Endresultat immer noch vorhanden sind.
Es soll z.B in dem Bild das ich mit hochgeladen habe der Schriftzug entfernt werden. Und dann nur das erkannte Bild wiedergegeben werden und auch ohne den Schriftzug gespeichert werden.
Lg anettchen
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
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.