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

Eine Maske manuel erstellen und nur diese Subtrahieren

 

shnegg
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.02.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 23.02.2011, 12:59     Titel: Eine Maske manuel erstellen und nur diese Subtrahieren
  Antworten mit Zitat      
Mahlzeit Smile
vielleicht könnt ihr mir wieder helfen.

Ich habe zweit Bilder, die ich von einander Subtrahoeren möchte. Jedoch erstelle ich auf meinem ersten Bild eine Maske mit:

Code:

h = impoly;
mask = createMask(h);
 


Wie kann ich ihm denn sagen, das nur der Bereich innerhalb der Maske von beiden Bilder subtrahiert werden soll?

Code:

phase_diff=img1(mask==1) - img2(mask==1);
 

so hatte es leider nicht funktioniert, und ich sehr nur nen paar Horizontale Linein

Vielleicht hat jemand eine idee

Grüßerle
Shnegg
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: 23.02.2011, 14:07     Titel:
  Antworten mit Zitat      
Moin shnegg,

Masken sind nun nicht so mein Ding, aber vielleicht hilft Dir das ein bischen weiter. imfreehand macht glaube ich nicht so den Unterschied zu impoly aus:

http://www.mathworks.com/matlabcent.....reader/view_thread/296475

Viele Grüße

Huberts
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: 25.02.2011, 15:11     Titel: Re: Eine Maske manuel erstellen und nur diese Subtrahieren
  Antworten mit Zitat      
Hallo shnegg,

Zitat:
Wie kann ich ihm denn sagen, das nur der Bereich innerhalb der Maske von beiden Bilder subtrahiert werden soll?

Bilder können in Matlab nur rechteckig sein. Deshalb kannst Du auch nur zwei rechteckige Bilder von einander subtrahieren.

Entweder Du subtrahierst die Orginal-Bilder und wendest die Maske im Nachhinein an, oder Du maskierst die Bilder vorher, indem Du alle Werte ausserhalb der Maske auf 0 setzt.

Code:

h = impoly;
mask = createMask(h);

imgSub = img1 - img2;
imgSubMask(~mask) = 0;

% oder
img1Sub(~mask) = 0;
img2Sub(~mask) = 0;
imgSubMask = img1Sub - img2Sub;
 

Und wenn es ein RGB-Bild ist:
Code:
img1Sub(cat(3, ~mask, ~mask, ~mask)) = 0;

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
shnegg
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.02.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 28.02.2011, 11:38     Titel:
  Antworten mit Zitat      
Suber es geht.
Mein Code für meine Maske sieht wie folgt aus:

Code:

Image  = imread('Magnitude.png');
Image2 = imread('Phase.png');

subplot(2, 2, 1);
imshow(Image, []);
title('Original Image');
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
message = sprintf('Draw your mask');
uiwait(msgbox(message));
draw = imfreehand();

mask = draw.createMask();

subplot(2, 2, 2);
imshow(mask)

% Mask the image and display it.
% Will keep only the part of the image that's inside the mask, zero outside mask.
maskedImage = Image;
maskedImage(~mask) = 0;
subplot(2, 2, 3);
imshow(maskedImage);
title('Masked Image');

maskedImage = Image2; %% Phase
maskedImage(~mask) = 0;
subplot(2, 2, 4);
imshow(maskedImage);
title('Masked Image Phase');
 




Dann einfach die Bilder Subtrahieren, und die Maske rüberlegen.
Danke Smile
Schöne Grüße
Schnegg
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.