Beispiel 3

  • Hi, ich bin mir zwar ziemlich sicher, dass es sich hierbei um eine extrem blöde frage handelt, aber nachdem ich jetzt schon einige Zeit am rumüberlegen und suchen bin geb ich mir die blöße und stell sie trotzdem:


    bsp3, vorerarbeitung:

    Quote

    Du sollst das Bild einlesen und in das Interval [Schwarzwert, 65535] bringen.


    was genau ist damit gemeint?

  • Hi, ich bin mir zwar ziemlich sicher, dass es sich hierbei um eine extrem blöde frage handelt,


    Es gibt keine dumme Fragen...



    bsp3, vorerarbeitung:
    Du sollst das Bild einlesen und in das Interval [Schwarzwert, 65535] bringen.
    was genau ist damit gemeint?


    Also das Ziel dieses Bsp ist die einzelnen Verarbeitungsschritte zu implementieren um von Raw Daten (also die Daten vom Kamera Sensor) Farbbilder zu bekommen. Dazu ist der erste Schritt einmal die Raw Daten einzulesen. Die Raw Daten sind im Bereich [Schwarzwert, 65535].


    Das schöne ist nun, dass das Einlesen der Rawdaten schon vom Framework durchgeführt wird (in evc_main).


    Also musst du im Vorverarbeitungsschritt nun nur noch den Blacklevel bestimmen um damit die Rawdaten von [Blacklevel 65535] nach Double im Bereich [0...1] umwandeln (wobei 0 den Schwarzwert und 1 den Wert 65535 abgebildet). Außerdem den Neutralen Weißabgleich bestimmen.


    Ich hoffe, deine Frage ausreichend beantwortet zu haben, sonst frage nochmals.

    Michael Beham
    Computer Vision WS 2012/13
    Einführung in Visual Computing SS2012, SS2013

    Edited 3 times, last by michaelllll: Neutralen Weißabgleich hinzugefügt ().

  • Es steht eigentlich im TODO:

    Quote

    TODO Verschiebe und skaliere den Kontrast so das Schwarz auf 0 und Weiß auf 1 abgebildet wird.


    Also in den Bereich [0,1]

    Michael Beham
    Computer Vision WS 2012/13
    Einführung in Visual Computing SS2012, SS2013

  • und wozu brauch ich dann den blacklevel? 0o


    edit:
    okay, ich glaub den punkt sollt ich jetzt haben, aber beim nächsten gehts ja wieder so weiter. Laut Internet findet man die Reihung des bayern pattern (also ob RGGB, BGGR, GRBG oder GBRG) nur im handbuch der kamera mit der das bild gemacht wurde... wie sollen wir dann also für jedes beispielbild bestimmen welches passt? und ich hab auch ka wie ich überhaupt die pattern aus dem raw bild auslesen soll für die einzelnen fragen. Leider finde ich dazu auf folien/textblättern/skript nichts was mir weiterhelfen könnte. Für zukünftige semester wäre es vllt hilfreich wenn diese Informationsquellen auch hilfreiches für die Übung beinhalten und man nicht die studenten stundenlang googlen lässt...

  • Die Anordnung des Bayer Pattern würde ich durch probieren bestimmen - einfach eine Art implementieren, das Ergebnis anschaun und dann die Zuordnung ändern (es gibt ja eh nur 4 Möglichkeiten). Dann einfach schauen, für welche Form die Farben am besten passen (es fehlt ja noch Weißabgleich etc.).


    Wie du die einzelnen Farbkanäle aus den Raw-Daten bekommst, war auch auf den Folien der Übungsbesprechung gut beschrieben (die sind im TISS online).

    Ines Janusch
    -------------------------
    EVC Tutorin 2014

    Edited once, last by da*vinci ().

  • Du brauchst den Schwarzwert und Weißwert für die Normalisierung des Eingabebildes in den Bereich [0,1].


    In den Buch von Szeliski[1], welches in der Angabe verlinkt ist, habe ich jetzt leider keine Informationen über den Schwarzwert gefunden, aber dafür steht etwas in der Englischen Wikipedia[2]. Bei den weiteren Schritte findest dann auch im Buch von Szeliski genug Infos (Kapitel 2.3).


    [1] http://szeliski.org/Book/
    [2] http://en.wikipedia.org/wiki/Black_level

    Michael Beham
    Computer Vision WS 2012/13
    Einführung in Visual Computing SS2012, SS2013

  • und wozu brauch ich dann den blacklevel? 0o


    Es ist ein wichtiger Schritt vor dem Weißabgleich. Wenn es nicht am Anfang abgezogen wird, werden die Anteile der Farben im anderen Verhältnis stehen und so kommen falsche Farben als Resultat raus.

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

  • Wie du die einzelnen Farbkanäle aus den Raw-Daten bekommst, war auch auf den Folien der Übungsbesprechung gut beschrieben (die sind im TISS online).


    ja wie ich die interpolier damit ich dann ein anständiges ergebnis bekomme schon, aber was mich halt stört, ist das man mit matlab mehr oder weniger allein gelassen wird, weil es nicht wirklich klar ist welche funktionen man nutzen kann. das kurze matlab tutorial ist zwar teilweise hilfreich aber zb im Matlab tutorial folie nr 15 steht:


    Quote

    ... und roten Kanal extrahieren:
    >> rot = bild(:,:,1)


    funzt vllt wenn man schon ein rgb bild hat aber aus der raw datei bekomm ich damit nur das selbe bild nochmal.
    Ich finde nur wenn bei den Übungen 1 bestimmtes programm so essenziell ist, sollte auch in der vo oder mit freiwilligen tutorials besser darauf eingegangen werden für leute die noch nie damit gearbeitet haben.


    edit:
    nur um sicherzustellen das ich es richtig kapiert habe: wenn ich jetzt zb vom raw img den 1. pixel in der 1. zeile nehmen würde müsste dieser eine farbe haben und nicht schwarz sein oder?

  • man kann in matlab relativ einfach werte aus einer matrix in einem bestimmten abstand selektieren, nach dem schema X(anfang:abstand:ende, anfang:abstand:ende), das geht bei einer zuweisung bei beiden matrizen, links und rechts vom =.
    das pattern lässt sich auch recht leicht herausfinden, wenn man bedenkt, dass auf jeden fall 2 grüne pixel drin sind, die sehr nah beinander liegen...

  • weil es nicht wirklich klar ist welche funktionen man nutzen kann.


    Die Liste der nützlichen Funktionen steht in der Angabe und in den Folien von der Matlab Einführung. Außerdem gibt es auch eine nette alternative Einführung und weitere Resources, die für eine andere LVA entstanden ist. Sonnst ist immer hilfreich F1 und Google zu verwenden ;) Wir sind aber da um Hilfe zu geben, also werde ich jetzt versuchen dir (und anderen lesern) bisschen mehr mit Matlab Grundlagen zu helfen:


    Nehmen wir eine Matrix A.
    Ihre Größe lässt sich durch size(A) bestimmen. Was raus kommt ist ein Vektor, z.B. [256 256]. Nehmen wir noch eine weitere Matrix B mit size(B) = [256 256 3]. A kann ein Graubild beinhalten und in B wird ein RGB Bild gespeichert.


    Zugriff auf einzelne Elemente ist einfach: A(1,1) ist das erste Element in A. B(1,1) wird nicht funktionieren, denn die 3. Dimension fehlt. B(1,1,1) wird die rote Komponente des ersten Pixels zurückliefern.


    Wenn ich jetzt eine ganze Spalte nehmen möchte, kann ich B(:,1,1) schreiben. Das ist das gleiche wie B(1:end,1,1). "end" ist keine Variable, sondern ein Schlüsselwort. Ich kann auch nur einen Teil der Spalte auswählen: B(64:128,1,1).


    Es ist noch interessanter wenn ich jedes 7-te Element wählen möchte. Dann schreibe ich B(1:7:end,1,1) oder mit der Teilselektion B(64:7:128,1,1). Also B(start:skip:stop) ist sehr gut um Submatrizen zu selektieren. Es lässt sich auch bei einer Zuweisung verwenden: A(1:7:end,2:7:end) = B(1:7:end,2:7:end,2) steht für eine Zuweisung der grünen Farbe aus einer Submatrix von B auf die selben Positionen in der Matrix A.



    funzt vllt wenn man schon ein rgb bild hat aber aus der raw datei bekomm ich damit nur das selbe bild nochmal.


    Der Bayer Muster wiederholt sich im Bild, überlege dir erst wie du die Farbkomponenten mit einer for-Schleife isolieren würdest, dann solltest du mit Hilfe der Angabe und meiner kurzen Einleitung hier im Stande sein die Farbkomponenten in drei separaten Matrizen zu speichern. Dann wendest du nur noch die Interpolation von den Slides an.



    Ich finde nur wenn bei den Übungen 1 bestimmtes programm so essenziell ist, sollte auch in der vo oder mit freiwilligen tutorials besser darauf eingegangen werden für leute die noch nie damit gearbeitet haben.


    Spätestens an der Uni muss man lernen auch selbst Wissen zu suchen, es kritisch zu betrachten und effizient zu nutzen :cool:



    edit:
    nur um sicherzustellen das ich es richtig kapiert habe: wenn ich jetzt zb vom raw img den 1. pixel in der 1. zeile nehmen würde müsste dieser eine farbe haben und nicht schwarz sein oder?


    Na ja, angenommen der Bildpunkt ist Teil des Himmels. Dann wird er keinen grünen Anteil haben und auch nicht viel rot. Bei einem GRBG Muster wird es also wirklich schwarz!

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

    Edited 3 times, last by Odo ().

  • ich habe eine frage bezüglich des neutralen weißabgleichs. das result nach dem demosaicing schaut für mich mit dem neutralen weißabgleich viel grüner aus als vorher aus.
    ist es falsch wenn ich mir einfach das asShotNeutral von imfinfo übergeben lasse und dann r = r * neutral(1), g = g * neutral(2), .. mache? ich hab dazu nicht viel gefunden, aber vielleicht such ich auch falsch

  • Hallo. Ich bin mir nicht sicher ob ich einen Fehler habe. Ich habe jetzt den Weißabgleich implementiert. Wenn ich eine Farbe auswähle, dann ändert sich das Bild nur geringfügig (auch wenn ich z.b. eine dunkle Farbe auswähle). Ganz am Ende wird mir dann aber das richtige Bild angezeigt. Gehört das so, oder habe ich irgendwo einen Fehler?

  • ich habe eine frage bezüglich des neutralen weißabgleichs. das result nach dem demosaicing schaut für mich mit dem neutralen weißabgleich viel grüner aus als vorher aus. ist es falsch wenn ich mir einfach das asShotNeutral von imfinfo übergeben lasse und dann r = r * neutral(1), g = g * neutral(2), .. mache? ich hab dazu nicht viel gefunden, aber vielleicht such ich auch falsch

    Ja, ist falsch.

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

  • Hallo. Ich bin mir nicht sicher ob ich einen Fehler habe. Ich habe jetzt den Weißabgleich implementiert. Wenn ich eine Farbe auswähle, dann ändert sich das Bild nur geringfügig (auch wenn ich z.b. eine dunkle Farbe auswähle). Ganz am Ende wird mir dann aber das richtige Bild angezeigt. Gehört das so, oder habe ich irgendwo einen Fehler?

    Es sollte so stimmen. Schaue auf das Histogramm. Wenn du eine dunkle Farbe auswählst, sollte es hohe Werte bekommen (ruhig auch 100). Das Bild wird trotzdem fast unverändert sein, denn es wird für die Darstellung normalisiert.

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

  • okay... was läuft falsch, wenn imfilter meinen 2.3ghz dualcore zu 100% auslastet und nix mehr passiert?


    Whs. ein großes RGB Bild (1kx1kx3) kombiniert mit einem großen Filter.


    Mit STRG-C kannst Matlabfunktionen übrigens abbrechen.

    Michael Beham
    Computer Vision WS 2012/13
    Einführung in Visual Computing SS2012, SS2013

  • das mit dem weißabgleich hat sich geklärt, jetzt habe ich aber ein problem mit dem histrogramm.
    ich hab die angabe jetzt einfach wortwörtlich genommen und das input file in einen width*height*3 vector geformt und den bin-vector erzeugt
    wenn ich das histogramm dazu mti hist anzeigen lasse dann seh ich n passendes histogramm, aber wenn ich wie verlangt das noch als bar(..) kapsle dann hab ich nurnoch einen großen block und keine bins mehr