WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kantenglättung (K.vereinfachung) in Binärbild

 

Localhorst
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 18.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2008, 09:14     Titel: Kantenglättung (K.vereinfachung) in Binärbild
  Antworten mit Zitat      
Hallo Forum,

ich habe eine relativ unebene Kontur in einem Binär Bild. Ich möchte nun diese Kontur leicht glätten. Bitte schaut kurz in das jpg das ich hochgeladen habe, da ist die Kontur zu sehen und auch eine rote Linie, die darstellen soll, wie ich die Kontur gerne hätte.

Mit den Pfeilen habe ich Stellen markiert, wo ich denke das es Probleme geben könnte.

Wie bekomme ich die Kontur soweit angepaßt, dass sie der roten Linie ähnelt?
(Mein Versuch war bwtraceboundary(), habe das Script aus der OnlineHilfe versucht, aber leider die Kontur nur an die Linke Seite angelegt bekommen, (clockwise, als Richtung hatte ich geändert)

Wie bekomme ich die einzelnen schwarzen Pixel, bzw. Pixelgruppen auf der linken Seite weg?
(mein Versuch war imfill(BW,'holes'); was auch einige der Flecken weg macht, aber nicht alle)

Evtl. könnt ihr mir auch noch einige Stichworte nennen, nach denen ich googlen kann. Kanntenglättung bringt in Deutsch und Englisch kaum Matlab spezifische Treffer.

Vielen Dank
Localhorst

kantenglaettung.jpg
 Beschreibung:

Download
 Dateiname:  kantenglaettung.jpg
 Dateigröße:  38.55 KB
 Heruntergeladen:  1145 mal
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 11.06.2008, 10:55     Titel:
  Antworten mit Zitat      
Moin,

schau dir mal das hier an, ob du damit weiterkommst:
KLICK!
Ich arbeite in meinem Fall zumindest damit.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Localhorst
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 18.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2008, 13:57     Titel:
  Antworten mit Zitat      
Vielen Dank schon einmal. Habe wieder viele neue Anregungen durch den Artikel gefunden.

Hast du evtl. noch eine Idee, wie ich "Pixel Inseln" entfehrnen kann, ich meine damit, Gruppen aus Pixeln, die im freien Raum stehen?
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 11.06.2008, 16:48     Titel:
  Antworten mit Zitat      
Du meinst damit sicher die schwarzen Pixel im weißen Gebiet?!

Ich würd auf das invertierte Bild nochmal imfill anwenden:
Code:
BW = ~imfill(~BW,'holes');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Localhorst
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 18.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2008, 10:37     Titel:
  Antworten mit Zitat      
Hallo ihr beiden,

vielen Dank schon einmal für eure bisherigen Tipps, ihr habt mir schon viele gute Ideen gegeben.

Ich habe mein Problem nun soweit, dass ich ein eine Kontur in einem Binär Bild habe. Ich muß nun für eine weitere Bearbeitung dieser Kontur, diese soweit beschränken, dass jeder Pixel in dieser Konturlinie an genau zwei andere grenzt.

Ausgang:


Problem



Wie ihr in dem zweiten Bild sehen könnt, steigt mein kleines Programm bei diesem kleinen Zipfel, der nach oben abzweigt aus. Bis dahin funktioniert alles, wie ich mir das vorstelle.

Mein Programm, folgt der Linie und passt sie entsprechend an, bei dieser Ecke, hat es logischer Weise Probleme, da sich der eingeschlagene Pfad, erst nach einer Zeit als Sackgasse erweist.

Deswegen würde ich die Kontur gerne vorher soweit glätten, bzw anpassen, dass solche Zipfel wegfallen.

Momentan lasse folgende Operationen über meine Ausgangslinie laufen:

BW2 = bwmorph(Joutline,'diag');
BW3 = bwmorph(BW2,'close');
BW3 = bwmorph(BW3,'thin');
BW3 = bwmorph(BW3,'diag');

Damit bekomme ich schon viel weg, aber halt nicht diese Zipfel.
Wenn ich das imdilate, aus dem (sehr guten) Tutorial von Steve drüber laufen lasse, wird die Linie was komplett ausgelöscht.

(Ich fahre die Linie momentan ab, und schaue ob die 4 direkt angrenzenden Pixel(Also der Nord,Ost,Süd,West Pixel um den aktuellen Center Pixel) zur Linie gehören oder nicht. Falls ihr den Code dafür braucht, kann ich den gerne Posten, ich wollte den Post nur nicht noch länger gestallten, als er eh schon ist)


Vielen Dank

Localhorst
Private Nachricht senden Benutzer-Profile anzeigen
 
chimperator
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 17.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2015, 12:52     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Moin,

schau dir mal das hier an, ob du damit weiterkommst:
KLICK!
Ich arbeite in meinem Fall zumindest damit.

Gruß
Alex



Hey Leute.
Leider erscheint kein Artikel wenn ich auf den Link klinke. Und ich hab so ziemlich das gleiche Problem... nur dass es sich bei mir um die Konturen von einer Pflanze handelt =)
Vllt kann jemand den neuen Link oder so posten =)
vielen dank schonmal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.05.2015, 23:36     Titel:
  Antworten mit Zitat      
Hallo chimperator,

Ich habe im dem Namen des Links den Ausdruck "ipexcell" gefunden und einfach mal im Internet nach "Matlab ipexcell" gesucht. Dann finde ich:
http://www.mathworks.com/products/d.....ge/ipexcell/ipexcell.html
Ob das hilft, weiß ich nicht. Aber der Trick Google zu fragen könnte ja auch schon mal nützlich sein ;-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.