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

Schärfe, Helligkeit, Kontrast, Silhouette

 

Sporisha
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2014, 09:07     Titel: Schärfe, Helligkeit, Kontrast, Silhouette
  Antworten mit Zitat      
Hallo zusammen Smile

erstmal vorab: Ich bin neu im Forum und habe leider auch noch wenig Erfahrung mit MatLab. Ich befinde mich derzeit im Praxissemester und soll ein Analyseprogramm für den magnetooptischen Kerr-Effekt schreiben. Dazu wurden Aufnahmen am Kerr-Mikroskop erstellt. Die Analyse an sich klappt soweit ganz gut, allerdings läuft die vorige Bildbearbeitung sehr umständlich über Paint und Powerpoint ( Embarassed ). Soviel zum Hintergrund.


Meine Frage lautet nun, ob es für folgende Powerpoint-Funktionen entsprechende MatLab-Befehle gibt:

1. Bildschärfe -30%
2. Helligkeit +30%
3. Kontrast -10%
4. Künstl. Effekt: Silhouette (Anzahl der Schattierungen: 6)

Der 4. Punkt scheint mir am schwierigsten... ist leider auch der wichtigste.
Falls jemand gute Literatur dazu kennt, würd ich mich darüber freuen. Ich selbst habe leider nichts passendes gefunden.


Danke schonmal für eure Hilfe Smile
Grüße, Sporisha
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: 05.02.2014, 09:35     Titel:
  Antworten mit Zitat      
Moin Sporisha,

herzlich Willkommen im Forum. Da hast Du ja gleich eine ganze Reihe aufregender Fragen und die Antworten dazu sind vielfältig. Es gibt in Matlab grundsätzlich mehrere Wege und es ist schwierig, den einzig und richtigen Weg zuerst zu benennen. Darum in ein paar Anmerkungen vorweg.

Zu1:

Natürlich kann man die Bildschärfe beeinflussen. Die Bildschärfe wird immer an Kanten sichtbar und man kann diese Kanten hervorheben oder absenken. Wenn du die Bildschärfe verringern willst, kannst du eine Unschärfe darüber legen. Dazu kann man einen Filterkern nehmen oder die Funktion ....fspecial('gaussian',5,5).

Zu 2:

alle Bilder liegen in den Werten zwischen 0 & 1 oder 0 & 255. Wenn ich dazu einen Betrag addiere oder abziehe verändert sich die Bildhelligkeit:

Code:
I=imread('test.tif');
I2=I+20;  % Bild wird logischerweise heller


Zu 3:

Um den Kontrast zu ändern müssen schon ein paar Codezeilen geschrieben werden. Es gibt keien fertige Funktion.

zu 4:

Um eine Silhouette zu erstellen, müsstest du genauer erklären, wie die aussehen soll. Soll es ein dünner Rahmen um eine Figur werden oder eine schwarze, gefüllte Fläche gegen einen hellen Hintergrund.

Du musst Dir Gedanken machen, wie du anfangen willst (womit) und wo du Hilfe benötigst.

Viel Erfolg - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.02.2014, 09:38     Titel:
  Antworten mit Zitat      
Also MATLAB und die Image Processing Toolbox können da "natürlich" viel mehr, aber der Nachteil ist, dass man die Theorie dahinter ein wenig verstehen muss um es anzuwenden.

Schärfe: Mal in der Doku nach IMSHARPEN schauen. Man kann das interaktiv machen, aber auch einen Befehl auf eine Bildmatrix loslassen (NB: Man importiert ja die Bilder zunächst als numerische Matrix und wendet dann die Operationen auf die Matrix an)

Helligkeit: Einfach die numerischen Werte direkt manipulieren

Kontrast: IMCONTRAST und IMADJUST

Silhouette: Da muss man zunächst herausfinden wir der Algorithmus heisst. Den gibt es dann bestimmt auch in MATLAB oder für MATLAB über FileExchange.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sporisha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2014, 10:13     Titel:
  Antworten mit Zitat      
Erstmal danke euch beiden für die schnellen Antworten Smile
Ich brauch etwas Zeit um eure Vorschläge umzusetzen, aber zur Frage wie die Silhouette aussehen soll, haeb ich mal ein Beispiel angehängt.

1. Bild: Original
2. Bild: Schärfe, Helligkeit, Kontrast verändert
3. Bild: Silhouette

Beispiel.png
 Beschreibung:

Download
 Dateiname:  Beispiel.png
 Dateigröße:  356.33 KB
 Heruntergeladen:  859 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.02.2014, 10:17     Titel:
  Antworten mit Zitat      
Ah, Hubertus und ich haben nahezu gleichzeitg geantwortet! Ich gehe immer davon aus, dass wenn jemand Bildverarbeitung macht auch die Image Processing Toolbox hat. Sollte auch eigentlich fast jede Hochschule mit MATLAB zusammen haben.

Für die Silhouette bitte die Beispiele zum Them "Image Segmentation" anschauen. Das kommt dem recht nah.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sporisha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2014, 11:14     Titel:
  Antworten mit Zitat      
Es hat jetzt eine Weile gedauert, aber möchte trotzdem noch meine Ergebnisse präsentieren... Vieleicht hilft es auch noch anderen Smile Es funktioniert aber nur mit Schwarz-Weiss-Bildern!

Code:
figure(1)
set(gcf, 'Name', 'Bildbearbeitung');

A = imread('1_k_25_400px_b1.png');
subplot(2,2,1);
image(A);
title('Original');

% Helligkeit ändern
B = A+25,6
subplot(2,2,2);
image(B)
title('Helligkeit +10%')

% Schärfe ändern
C = imfilter(B,fspecial('gaussian',5,1),'same')
subplot(2,2,3);
image(C)
title('Weichzeichnen')

% Kontrast ändern
Cmin = min((min(C(:,:,1)))')
Cmax = max((max(C(:,:,1)))')
D = (C-Cmin)*(400/(Cmax-Cmin))
subplot(2,2,4);
image(D)
title('Kontrast')



Um die Silhouette zu erzeugen habe ich mir selbst was ausgedacht und es funktioniert wunderbar Smile Falls es trotzdem Verbesserungsvorschläge gibt, bitte ich darum.
Habe vor einem Monat angefangen, mir MatLab selbst beizubringen... auf das was jetzt dabei rausgekommen ist, bin ich schon fast stolz Smile Smile Ich danke euch natürlich für eure Hilfe!!


Code:
figure(2)
set(gcf, 'Name', 'Silhouetten mit unterschiedlicher Anzahl Schattierungen');

E1 = D
for i=1:400  
    for j=1:400
    if E1(i,j,:) <= 85
        E1(i,j,:) = 0;
    end
    if E1(i,j,:) > 85
        if E1(i,j,:) <= 171
            E1(i,j,:) = 128;
        end
    end
    if E1(i,j,:) > 171
        E1(i,j,:) = 255;
    end
    end
end
subplot(2,2,1);
image(E1)
title('3 Schattierungen');

E2 = D
for i=1:400  
    for j=1:400
    if E2(i,j,:) <= 32
        E2(i,j,:) = 0;
    end
    if E2(i,j,:) > 32
        if E2(i,j,:) <= 96
            E2(i,j,:) = 64;
        end
    end
    if E2(i,j,:) > 96
        if E2(i,j,:) <= 160
            E2(i,j,:) = 128;
        end
    end
    if E2(i,j,:) > 160
        if E2(i,j,:) <= 224
            E2(i,j,:) = 192;
        end
    end
    if E2(i,j,:) > 192
        E2(i,j,:) = 255;
    end
    end
end
subplot(2,2,2);
image(E2)
title('5 Schattierungen');

E3 = D
for i=1:400  
    for j=1:400
    if E3(i,j,:) <= 21
        E3(i,j,:) = 0;
    end
    if E3(i,j,:) > 21
        if E3(i,j,:) <= 64
            E3(i,j,:) = 43;
        end
    end
    if E3(i,j,:) > 64
        if E3(i,j,:) <= 107
            E3(i,j,:) = 85;
        end
    end
    if E3(i,j,:) > 107
        if E3(i,j,:) <= 149
            E3(i,j,:) = 128;
        end
    end
    if E3(i,j,:) > 149
        if E3(i,j,:) <= 192
            E3(i,j,:) = 171;
        end
    end
    if E3(i,j,:) > 192
        if E3(i,j,:) <= 235
            E3(i,j,:) = 213;
        end
    end
    if E3(i,j,:) > 235
        E3(i,j,:) = 255;
    end
    end
end
subplot(2,2,3);
image(E3)
title('7 Schattierungen');

E4 = D
for i=1:400  
    for j=1:400
    if E4(i,j,:) <= 16
        E4(i,j,:) = 0;
    end
    if E4(i,j,:) > 16
        if E4(i,j,:) <= 48
            E4(i,j,:) = 32;
        end
    end
    if E4(i,j,:) > 48
        if E4(i,j,:) <= 80
            E4(i,j,:) = 64;
        end
    end
    if E4(i,j,:) > 80
        if E4(i,j,:) <= 112
            E4(i,j,:) = 96;
        end
    end
    if E4(i,j,:) > 112
        if E4(i,j,:) <= 144
            E4(i,j,:) = 128;
        end
    end
    if E4(i,j,:) > 144
        if E4(i,j,:) <= 176
            E4(i,j,:) = 160;
        end
    end
    if E4(i,j,:) > 176
        if E4(i,j,:) <= 208
            E4(i,j,:) = 192;
        end
    end
    if E4(i,j,:) > 208
        if E4(i,j,:) <= 240
            E4(i,j,:) = 224;
        end
    end
    if E4(i,j,:) > 240
        E4(i,j,:) = 255;
    end
    end
end
subplot(2,2,4);
image(E4)
title('9 Schattierungen');
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 - 2024 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.