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

Interpolation eines "Loches"

 

PeteVAR
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 11:35     Titel: Interpolation eines "Loches"
  Antworten mit Zitat      
Hallo liebe Matlab Forum User Smile

Ich habe ein Problem.
Und zwar habe ich ein Image auf den leider ein Teil weggeschnitten ist. (relativ wenig im Vergleich zum Rest)

Nun ist meine Frage, ob ich diesen Bereich interpolieren kann, d.h. Matlab soll mir im Prinzip mit einem Algorithmus anhand der anderen Pixelwerte auf diesem Bild errechnen wie die Pixelverteilung in diesem Loch wäre.

Gibt es irgendwelche vorprogrammierten Funktionen hierfür.
Leider habe ich nicht mal einen Ansatz wie ich sowas verwirklichen soll.

Vielen Dank im Voraus.

Beste Grüsse
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 02.10.2013, 11:42     Titel:
  Antworten mit Zitat      
Moin,

deine Angaben sind leider zu dürftig, um auf diese Frage auch nur vage zu antworten. Entscheiden ist, ob der Rest eine homogene Struktur ist oder eher eine Textur. Kannst du das Bild oder ein ähnliches Beispiel anhängen.

Viele Grüße - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
PeteVAR
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 12:38     Titel:
  Antworten mit Zitat      
Hier wäre ein Beispiel. Der Schlitz in dem Bild sollt "ausgeglichen" werden.
Brauchen Sie noch weitere Informationen?

Example matlabforum.tif
 Beschreibung:

Download
 Dateiname:  Example matlabforum.tif
 Dateigröße:  199.15 KB
 Heruntergeladen:  541 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 02.10.2013, 12:58     Titel:
  Antworten mit Zitat      
Ich kann das Bild heute nicht laden und habe mir "so ein ähnliches" gemacht. Versuche mal:

Code:
I=imread(Bild);
se=strel('ball',15,5);
I2=imerode(I,se);
imshow(I2)


Das sind keine auf das Bild abgestimmte Werte, sondern Testwerte. Sie zeigen, welche Funktionen in Frage kommen, z.B. "strel" und "imerode". Ich würde das mal versuchen und mit den Werten spielen. Zu "strel" gibt eine ganze Reihe anderer Funktionen, die vl. auch noch bessere Ergebnisse bei dem Bild erzielen können. In meinem Testbeispiel war der Strich weg.
Private Nachricht senden Benutzer-Profile anzeigen
 
PeteVAR
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 13:09     Titel:
  Antworten mit Zitat      
Vielen Dank, ich werde das mal ausprobieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
PeteVAR
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 13:34     Titel:
  Antworten mit Zitat      
Ich hab diese Funktionen mal ausprobiert.
Das gute zuerst, der Schlitz ist weg.

Leider wird das Bild, va falls mehrere kleine Pixelwolken vorhanden sind teilweise stark verändert.

Gewünscht ist nur diesen Schlitz zu beseitigen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 02.10.2013, 15:56     Titel:
  Antworten mit Zitat      
Das Füllen von Bildbereichen ist nicht trivial. In Spezialprogrammen werden dazu die Umgebungspixel genommen und daraus eine wahrscheinliche Textur berechnet. Das ist nicht mit ein paar Matlabzeilen hinzubekommen. WEnn man höhere Anforderungen stellt, als die oben genannten, bleibt natürlich die gängige Methode, die benachbarten Pixel zu kopieren und an der Fehlstelle wieder einzusetzen. Dabei ist es wichtig, dass die Bildausschnitte absolut übereinstimmen. Sonst gibt es eine Fehlermeldung. Man kann das in einem Arbeitsgang machen, sich z.B. die Pixelreihen links vom Streifen nehmen und rechts wieder einfügen, oder man nimmt je die Hälfte von der linken und rechten Seite.

Die Koordinaten bekommst du mit "impixelinfo".

Code:
I=imread(Bild);
imshow(I)
impixelinfo % obere linke Ecke anmessen, Werte merken
impixelinfo % untere rechte Ecke anmessen, Werte merken
I2=I(Bildausschnitt,:); % Pixel werden "kopiert"
I(Bildausschnitt,:)=I2;  % Pixel werden eingesetzt
 


I(2:220,189:220,:)=I2; %%...... ,:) steht für alle Farblayer

Das Ergebnis ist beigefügt.

189.jpg
 Beschreibung:

Download
 Dateiname:  189.jpg
 Dateigröße:  5.54 KB
 Heruntergeladen:  528 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
PeteVAR
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2013, 10:32     Titel:
  Antworten mit Zitat      
Hallo Hubertus,
ich habe leider deine Erklärung nicht ganz verstanden, deswegen muss ich nochmals nachfragen.
Schneidest du den weissen Streifen aus (macht ja eigentlich nicht soviel sinn) oder die Pixelspalte links (oder rechts) neben dem Streifen und kopierst ihn dann über den Streifen?

Um das Bild kurz zu erklären:

Prinzipiell habe ich hier einen Gradienten, der je weiter in der Mitte des Kreises abnimmt (mit einer relativen Kontinuität). Mit deiner Methode würde ich den Gradienten (da der Streifen auch in die Mitte des Bildes ragt und hier der geringste Pixelwert ist), mit falschen Pixel überschreiben (richtig?).

Gibt es keinen Algorithmen in Matlab (ich glaube "strel", "imdilate", "imclose" sind schon Algorithmen in dieser Art), die diesen Gradienten erkennen und die Pixel ersetzen. Es würde auch genügen, den Bereich um den Streifen auszuschneiden und zu ersetzten.

Ich bin derzeit am verifizieren der verschiedenen Arten. Hierzu vergleiche ich das eigentliche Bild (der Streifen ist hier nur manuell eingefügt) mit dem Ergebniss der Algorithmen und habe leider noch nicht das gewünsche Resultat gefunden.

Vielen Dank im Voraus.

Beste Grüsse

Pete
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 03.10.2013, 10:40     Titel:
  Antworten mit Zitat      
Alle Füllmethoden fügen Pixelwerte ein, von denen man nicht weiß, ob sie stimmen. Es ist keine Art Bildrekonstruktion, da es über diesen Bereich keine Informationen gibt. Wenn ich also diesen Bereich füllen muss, habe ich nur die Pixelwerte rechts und links von der Lücke "und nehme an", dass die Textur sich so fortsetzten wird. Das dürfte in deinem Fall auch kein Problem sein.

Ich nehme also die Pixelwerte von links (oder von links und rechts) und füge sie in die Lücke ein. Andere Methoden sind von dieser Genauigkeit viel weiter entfernt, also auch die, nach denen du gefragt hast.
Private Nachricht senden Benutzer-Profile anzeigen
 
PeteVAR
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2013, 10:41     Titel:
  Antworten mit Zitat      
Ok, Vielen Dank.
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.