|
reMi |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.04.2009, 10:22
Titel: Gradientenbetragsbild
|
|
Hallo!
Ich bin nocht nicht wirklich vertraut mit MATLAB, allerdings benutzen wir es auf der Fachhochschule und wir haben ne Übung über Ostern bekommen um uns ein bisschen damit auseinander zu setzen. Leider häng ich da grad bissle
Ich hab ein Bild, das ich mit Gauß filtern soll und dann mit gegebenen Filtermasken (ich nenne sie mal Gy und Gy) in beide Richtungen abgeleitet wird. Bis jetz ja kein Problem, jedoch soll ich dann den gradientenbetrag berechnen und diesen durch imshow darstellen...
Gradient = sqrt(Gx.^2+Gy.^2)
So sollte er ja berechnet werden, aber wie wende ich diesen Betrag bzw diese Matrix auf jedes einzelne Pixel meines Bildes an? Hab da null Durchblick!
Vielen Dank im vorraus und hoffe die Frage is nicht zu doof...
reMi
|
|
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.04.2009, 20:13
Titel:
|
|
Wie leitest du denn nach Gx und Gy ab?
Ich würd jetzt spontan sagen, den selben Algorithmus musst du nun auch mit Gradient anwenden.
Ich tippe mal auf eine 2D-Faltung mittels conv2?
_________________
>> why
The computer did it.
|
|
|
reMi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.04.2009, 21:23
Titel:
|
|
Hallo!
Zuerst definiere ich die Filtermasken:
Gx=[-1 0 1; -1 0 1; -1 0 1];
Gy=[-1 -1 -1; 0 0 0; 1 1 1];
und dann filter ich das bild (nachdem ich es schon mal mit gauß gefiltert habt) mit den zwei masken
LWSGx = imfilter(LWS,Gx);
LWSGy = imfilter(LWS,Gy);
danach berechne ich mir eben den gradienten
Gradient = sqrt(Gx.^2+Gy.^2);
wenn ich dann allerdings
LWSgradient = imfilter (LWS,Gradient);
mach und mir das dann durch imshow anschau, kommt halt ein total komisches bild raus, bei dem ich mir net denken kann, dass es so aussehen soll...
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.04.2009, 23:53
Titel:
|
|
Ähm, doofe Frage.
Ist der Gradient nicht über die Ableitungen des Bildes gegeben? Dann müsstest du doch einfach:
_________________
>> why
The computer did it.
|
|
|
reMi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.04.2009, 09:35
Titel:
|
|
das hab ich schon mal proebiert, da sagt er dann immer:
??? Undefined function or method 'sqrt' for input arguments of type 'uint8'.
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.04.2009, 12:07
Titel:
|
|
Uint8 ist das Zahlenformat in dem die Bilder gespeichert sind. Uint8 enthält dabei alle ganzen Zahlen von 0 bis 255.
Du musst vorher die Bilder in double umwandeln.
Empfiehlt sich übrigens immer, weil du dann verhinderst, dass an den Grenzen unterhalb von 0 oder über 255 etwas abgeschnitten wird.
_________________
>> why
The computer did it.
Zuletzt bearbeitet von Maddy am 13.04.2009, 12:55, insgesamt einmal bearbeitet
|
|
|
reMi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.04.2009, 12:51
Titel:
|
|
jooo, es funktioniert, vielen dank!
eine letzte frage hab ich noch...es wird gefragt, wo das bild große werte und wo es kleine werte aufweist.
ich dachte das wäre mit einem histogramm zu lösen:
figure, imhist(LWSgradient);
wobei hier wieder ein fehler kommt. muss ich hierbei wieder was besonderes beachten ?
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.04.2009, 13:00
Titel:
|
|
Dann stellen sich mir 2 Fragen:
Welcher Fehler erscheint?
und
Warum ein Histogramm, dieses würde ja die Position unter den Tisch fallen lassen? Also könnte man dann die Frage "Wo?" gar nicht beantworten. Da denk ich eher an die Suche per Index, also z.B. alle Werte die über 250 liegen suchen und dann markieren im Bild, oder denk ich da jetzt falsch?
_________________
>> why
The computer did it.
|
|
|
reMi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.04.2009, 13:05
Titel:
|
|
hey!
fehler:
??? Error using ==> iptcheckinput
Function IMHIST expected its first input, I or X, to be two-dimensional.
Error in ==> imhist>parse_inputs at 270
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...
Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});
Error in ==> R1 at 22
figure, imhist(LWSgradient)
und die frage des unterpunkts lautet:
Stellen Sie den Gradientenbetrag G mit Hilfe von imshow als Bild dar. An
welchen Stellen weist das Gradientenbetragsbild große Werte auf und wo
kleine?
da wir matlab noch nicht so lange verwenden, weiss ich halt net genau wie er das haben will
|
|
|
madlab |
Forum-Fortgeschrittener
|
|
Beiträge: 86
|
|
|
|
Anmeldedatum: 15.05.12
|
|
|
|
Wohnort: Freiburg
|
|
|
|
Version: 7.11 (R2010b)
|
|
|
|
|
|
Verfasst am: 12.06.2012, 09:17
Titel:
|
|
hi
die antwort kommt sicher gute drei jahre zu spät, aber ich denke dein prof wollte mit der frage nach den großen und kleinen beträgen darauf hinaus, dass der gradient für starke änderungen (also an "kanten") im bild große werte produziert und bei homogenen flächen (z.b. unscharfe bildbereiche) kleine werte.
den gradient kann man nämlich auch zur bewertung der bildschärfe/fokus benutzen, große werte müssten demnach also im scharfen bereich des bildes auftauchen und kleine im unscharfen bereich.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|