LabVIEWForum.de
Weiche Kanten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW Vision (/Forum-LabVIEW-Vision)
+---- Thema: Weiche Kanten (/Thread-Weiche-Kanten)



Weiche Kanten - Biker777 - 17.11.2012 22:39

Hallo Forums Mitglieder,

ich habe ein kleines VI mit der Rotate Funktion zusammengestellt. Wenn ich jetzt ein Bild auswähle und dieses drehe, erscheint ein Hintergrund. Diesen will ich an den Rand des Bildes anpassen. D.h. im im Bild unten soll sich der schwarze Hintergrund automatisch in das vom Bild gezeigt grau verwandeln,

[attachment=42261]

[attachment=42262]

Danke im Voraus für eure Hilfe,


RE: Weiche Kanten - Y-P - 19.11.2012 08:44

Ich kenne mich damit zwar nicht aus, aber ich kann mir nicht vorstellen, dass das (ohne größere Umwege) geht. Woher soll LabVIEW denn wissen, dass Du gerade das "Grau" willst. Wenn Du ein anderes (bunteres) Bild hast, dann wird das noch viel schwerer.

Gruß Markus


RE: Weiche Kanten - Biker777 - 19.11.2012 18:22

Ja genau da liegt das Problem, die größeren Umwege ;-)


RE: Weiche Kanten - Y-P - 19.11.2012 19:53

Da ich ("leider") kein Vision habe, kenne nicht mal die Umwege.... Big Grin

Gruß Markus

(19.11.2012 18:22 )Biker777 schrieb:  Ja genau da liegt das Problem, die größeren Umwege ;-)



RE: Weiche Kanten - Kasi - 20.11.2012 11:03

Ich hab auch kein Vision (mehr), aber kannst du dem imaq rotate nicht "einfach" als Destination image ein entsprechend größeres Image mit entsprechender Hintergrundfarbe einspeisen?
Die Größe des Destination images musst du dann mit irgendwelchen trigonometrischen Funktionen (tangens nehmen ich an), oder du gibst einfach eine Obergröße für beide Seiten an (max (x,y)).
Wie du die Hintergrundfarbe automatisiert rausbekommst, musst du selbst austüfteln, da kenne ich die Vision-Funktionen zu wenig.


RE: Weiche Kanten - Kiesch - 20.11.2012 14:43

Die primitive und (vermutlich funktionale) Lösung:

Soweit ich das sehe, brauchst du ja nicht das ganze Bild sondern nur die Bildmitte. Ergo zeigst du auch nur Seitenlänge durch Wurzel(2) als Bildausschnitt (quasi reingezoomt). Egal wie du dann das Bild drehst, es ist immer "echtes" Bild an jedem gezeigten Ort (und braucht nicht mit Schwarz o.ä. aufgefüllt werden).
Basiert natürlich einfach darauf, dass die Diagonale Wurzel(2) mal Seitenlänge lang ist...

Gruß Kiesch

P.S: Wenn du immer das ganze gemachte Bild sehen willst geht es natürlich nicht so einfach, aber du sparst dir so halt rauszufinden welche Farbe der Aussenbereich hat indem du einfach reinzoomst.


RE: Weiche Kanten - Soean - 20.11.2012 15:06

Etwas aufwändiger: Vorausgesetzt, dass du auf deinem aufgenommenen Bild nie ein "echtes" schwarz hast:
Bild to array; Histogramm erstellen; häufigste Farbe als Hintergrund annehmen; jedes Element, welches einen Schwarzwert aufweist mit dem Hintergrundwert überschreiben; Array zu to Bild.

Fertig :-)


RE: Weiche Kanten - Biker777 - 03.12.2012 11:23

Das könnte gehen, aber das Problem ist, das meine Rotate Funktion nur einen Color Replace Value Eingang.Das ist ein Cluster 4 Datentyp......Ich habe es bislang hinbekommen, einen Farbwert auszulesen, sodass ich einen Cluster 3 Datentyp habe. Wie kann ich nun ein U32 oder Cluster 3 Datentyp in Cluster 4 umwandeln???


RE: Weiche Kanten - Biker777 - 03.12.2012 12:13

Ich versuche das ganze jetzt über die Funktion Get Color Pixel Value,(siehe Bild), aber die gibt am U64 Ausgang absolut nichts aus!!!


RE: Weiche Kanten - unicorn - 30.12.2012 09:50

Die Get Pixel Value Methode liefert nur an dem Ausgang, der zu dem Bildtyp passt, einen Wert. Also RGB (U32) Bilder liefert nur einen U32 Wert.

Zur Umwandlung des U32-Werts in die Farbkomponenten gibt es das IMAQ IntegerToColorValue VI.

Zur Füllung der Ecken würde ich die Flood Fill Funktion verwenden. Den Farbwert würde ich entweder fest vorgeben, da die Ecken ja keine Information enthalten können. Oder abhängig vom beabsichtigten Zweck mir schon die Mühe machen und das Bild bis in die Ecke zu extrapolieren. Man könnte sich z. B. die Pixelwerte auf der Kante holen, einen Mittelwert berechnen und damit die gesamte Ecke füllen.

Guten Rutsch, Unicorn