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

ginput macht bild schwarz weiss

 

Avantasia2k
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.06.08
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 19.06.2008, 20:09     Titel: ginput macht bild schwarz weiss
  Antworten mit Zitat      
Erstmal Hallo an alle Matlab user und freue mich hier im Forum zu sein
Ich arbeite gerade an einer Aufgabe die mir gestellt wurde und vl könnt ihr mir helfen (wäre super Very Happy )

Ich versuch mit ginput() ein bestimmten Bereich des farbbildes Bildes "auszuschneiden"

Das mach ich so


Code:

% Bild einlesen
originalRGB = imread('test.jpg');
%altes Bild anzeigen
originalRGB;
figure;
imshow(originalRGB);

% Funktion zur Bestimmung der position

% Bestimmung der linken, unteren Ecke und der rechten, oberen Ecke des
% gewünschten auszuwählenden Rechtecks mit ginput (2 Mausklicks)


[x,y] = ginput(2);

% Mit floor/ceil oder auch round auf den nächsten ganzzahligen Wert runden, um später die entsprechende Zeilen- und Spaltenindizes der Matrix zu erreichen
minx=floor(min(x));
maxx=ceil(max(x));
miny=floor(min(y));
maxy=ceil(max(y));


% Setzen der Elemente innerhalb der einzelnen Funktionen
bild2 = originalRGB(miny:maxy, minx:maxx);

% Darstellung des überarbeiteten Bildes
figure
imshow(bild2);


 


Das klappt auch eigentlich
nur wenn ich nun bild2 ausgebe ist das in s/w.
Als ich die Vektoren angeschaut habe von bild2 und originalRGB
ist mir aufgefallen das die originalRGB aus "3" Vekrtoren besteht (originalRGB,:,:1 originalRGB,:,:2 originalRGB,:,:3)

und der Bild2 Vektor besteht nur aus "1" (bild2(,:,:;1))

Ich denke das dadruch die Informationen verloren gehen ?


Ich würde mich freuen wenn mir jemand helfen könnte da ich dazu nix gefunden habe ?

MFG

Ava
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2008, 22:35     Titel:
  Antworten mit Zitat      
Statt
Code:
% Setzen der Elemente innerhalb der einzelnen Funktionen
bild2 = originalRGB(miny:maxy, minx:maxx);


Code:
% Setzen der Elemente innerhalb der einzelnen Funktionen
bild2 = originalRGB(miny:maxy, minx:maxx,:);


müsste klappen (ohne Gewähr).

Hintergrund:

Wenn man in einer Matrix nicht alle Dimensionen anspricht, wird automatisch der erste Index der nicht berücksichtigten Dimension ausgewählt.

Bsp:
Code:
A = rand(2,2);
A(1)
A(2)

liefert ebenfalls den Wert A(1,1) bzw. A(2,1).
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2008, 07:43     Titel:
  Antworten mit Zitat      
dib0r hat Folgendes geschrieben:

Wenn man in einer Matrix nicht alle Dimensionen anspricht, wird automatisch der erste Index der nicht berücksichtigten Dimension ausgewählt.


Ich habe grade gemerkt dass das so nicht ganz stimmt. Wenn man zum Beispiel wieder obgenanntes Array hat der Dimension 2 x 2, dann kann man auch A(3) oder A(4) eingeben. D.h. wenn eine oder mehrere Dimensionen fehlen, dann werden diese einfach in die letzte angesprochene Dimension integriert. D.h. wenn ich wieder meine A-Matrix anspreche, dann fehlt die Dimension 2, d.h. die Dimension 1 hat dann 2 * 2 Einträge, wobei die Daten spaltenweise angehängt werden.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Avantasia2k
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.06.08
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 20.06.2008, 18:56     Titel: DANKE
  Antworten mit Zitat      
Vielen Dank für deine Hilfe
Hat echt super geklappt jetzt.
Und deine Ausführung war nach dem 2 mal lesen auch verständlich Smile
und hab wieder was dazu gelernt

Nur hab ich jetzt ein weiteres Problem
Nachdem ich mich mal eingelesen habe über die ganzen Filter die es in Matlab gibt will ich jetzt nun das dieser Bereich den ich im Bild makiert habe mit

Code:

bild2 = p.originalRGB(miny:maxy, minx:maxx,:);
 


über einen Filter laufen lassen


Code:

h = fspecial('motion',20,45);
filteredRGB = imfilter(bild2,h,'replicate');

%ausgabe Neues Bild
imshow(filteredRGB);title('Verändert');
 


Das Problem ist jetzt nur das dadruch dieser Bereich zwar gefiltert wird
aber es wird als neues Bild angezeigt. Und nur der gefilterter Bereich.

Nun soll aber das Bild als 1 Bild angezeigt werden.

wie als wenn ich

Code:

bild2 = p.originalRGB(miny:maxy, minx:maxx,:) = 0;
 

mache. Dann wird das originalBild angezeigt mit dem nun schwarzen veränderten Bereich ?

Wäre nett wenn mir da jemand helfen könnte noch Wink
den rest müsste ich dann alleine hinbekommen Wink *ohne Gewähr*
Private Nachricht senden Benutzer-Profile anzeigen
 
Avantasia2k
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.06.08
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 21.06.2008, 14:35     Titel: Lösung
  Antworten mit Zitat      
So nach einer nachtschicht bis 6 Uhr morgens hab ich es jetzt hinbekommen
das es auch ne Lösung zu dem Problem gibt falls andere user auch mal vor diesem Problem stehen

Code:


function pushbutton2_Callback(source, eventdata, handles)
% source    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Holen des Bildes das geladen wurde
 p = guidata(source);

[x,y] = ginput(2);



%Mit floor/ceil oder auch round auf den nächsten ganzzahligen Wert runden, um später die entsprechende Zeilen- und Spaltenindizes der Matrix zu erreichen
minx=floor(min(x));
maxx=ceil(max(x));

miny=floor(min(y));
maxy=ceil(max(y));


select_view = p.originalRGB(miny:maxy, minx:maxx,:) ;

%Ende bestimmung der Position

% Welcher Filter wird gewählt
popup_sel_index = get(handles.filter_choice, 'Value');



%Auswahl des Filters
switch popup_sel_index
    case 1
        h = fspecial('motion',20,45);
        filteredRGB = imfilter(select_view,h,'replicate');
    case 2
        h = fspecial('disk',20);
        filteredRGB = imfilter(select_view,h,'replicate');
    case 3
        h = fspecial('unsharp');
        filteredRGB = imfilter(select_view,h,'replicate');
    case 4
        h = fspecial('motion',20,45);
        filteredRGB = imfilter(select_view,h,'replicate');
    case 5      
       filteredRGB = select_view + select_view;
        h = fspecial('motion',20,45);
        filteredRGB = imfilter(filteredRGB,h,'replicate');
end




p.originalRGB(miny:maxy, minx:maxx, 1) = filteredRGB(1:maxy-miny+1, 1:maxx-minx+1, 1);
p.originalRGB(miny:maxy, minx:maxx, 2) = filteredRGB(1:maxy-miny+1, 1:maxx-minx+1, 2);
p.originalRGB(miny:maxy, minx:maxx, 3) = filteredRGB(1:maxy-miny+1, 1:maxx-minx+1, 3);

   
     
imwrite(p.originalRGB,'neu.jpg');

%ausgabe Neues Bild
imshow(p.originalRGB);title('Verändert');

 



Gruss Ava
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.