Ich habe dieses wunderbare Bild unten aus der Wikipedia page on Dodecahedrons. Es zeigt ein langsam rotierendes Tetroid. Wenn Sie genau hinschauen, ist klar, dass die Annahme besteht, dass irgendwo außerhalb des Bildschirms eine Lichtquelle ist. Wenn ein Gesicht mehr Licht zurück zum Betrachter reflektiert, erscheint es heller und wenn es weniger Licht reflektiert, erscheint es dunkler. Ich habe eine Vorstellung davon, wie ich eine Metrik für die Lichtmenge erhalten könnte, die ein Gesicht bei einer bestimmten Drehung reflektiert. Ich kann die Metrik auch auf einen Wert zwischen 0 und 255 skalieren (was die meisten Farbskalen annehmen). Wie bekomme ich jedoch die tatsächlichen RGB-Werte, die bei hoher Metrik wie ein helles, reflektierendes Blau und bei niedriger Metrik als dunkles Blau aussehen?Wie bekomme ich eine Farbskala für reflektiertes Licht
1
A
Antwort
1
Ich schlage vor, dass Sie den Standard colorsys
Modul für diese Aufgabe, und die Arbeit im HSV verwenden oder HLS-Farbkoordinatensysteme. In der Regel bestimmen Sie den Farbton und die Sättigung Ihrer Grundfarbe und variieren dann den Wert oder die Helligkeit, um den gewünschten Farbbereich zu erstellen.
Hier ist ein kurzes Beispiel, das Numpy verwendet, um ein HLS-Raster aus einem bestimmten Farbton zu erstellen.
from colorsys import hls_to_rgb
import numpy as np
from PIL import Image
def ls_grid(hue, numcolors, scale):
a = np.linspace(0, 1, num=numcolors, endpoint=True)
grid = np.array([[hls_to_rgb(hue, lite, sat) for sat in a] for lite in a])
grid = (0.5 + 255 * grid).astype(np.uint8)
return grid.repeat(scale, axis=1).repeat(scale, axis=0)
hue = 0.585
numcolors, scale = 32, 16
grid = ls_grid(hue, numcolors, scale)
img = Image.fromarray(grid)
img.show()
img.save('litesat.png')
+0
Sehr hilfreich! –
1
Verwandte Themen
- 1. Reflektiertes Array über eine Diagonale
- 2. Wie bekomme ich die volle Bandbreite einer Farbskala?
- 3. Python Bokeh Farbskala für Streudiagramm
- 4. R Farbskala für logarithmische Daten?
- 5. Wie kann ich in Matplotlib Zahlen in eine Farbskala umwandeln?
- 6. rgl - Farbskala
- 7. Format Farbskala
- 8. Farbskala in C++
- 9. Empfehlen Sie eine Farbskala für 13 oder mehr Kategorien
- 10. SSRS Graded Farbskala
- 11. Angeben der Farbskala für Karten in ggplot
- 12. Farbskala in Xcode 8
- 13. eine kontinuierliche Farbskala mit POSIXt Objekten ändern
- 14. Code für LED-Licht für Stm32f334R8 verstehen?
- 15. Wie bekomme ich eine umgekehrte URL für eine generische Ansicht?
- 16. Wie bekomme ich eine Liste von Kindtabellen für eine Datenbanktabelle?
- 17. eine Licht-Datenbank für HTML 5 Lagerung und GDrive
- 18. Wie man eine manuelle Farbskala in ggplot an geom_smooth übergibt?
- 19. Diskretisierung viridis ggplot Farbskala
- 20. Farbskala über Liste
- 21. Benötige ich einen View Controller für MVVM-Licht in Silverlight?
- 22. Wie bekomme ich eine Vorhersage?
- 23. Wie bekomme ich eine Gesamtanzahl?
- 24. ggplot2: separate Farbskala pro Facette
- 25. Prisma vs MVVM Licht für UWP-Anwendung
- 26. Andere Farbskala geom_contour und geom_point
- 27. Benutzerdefinierte diskrete Farbskala in plotly
- 28. Dateiformat für die Klassifizierung mit SVM-Licht
- 29. Swift - Ändern der Farbskala Tönungsfarbe
- 30. Rückschwellen von quantisierter Farbskala d3
Um zu erfahren, wie Sie die Helligkeit Berechnungen zu tun, einen Blick auf [Specular Highlight] nehmen (https://en.wikipedia.org/wiki/Specular_highlight). Um den tatsächlichen RGB-Wert zu erhalten, können Sie die HSV- oder HLS-Farbparametrisierung verwenden und mit den Funktionen im Standard ['colorsys'] in RGB umwandeln (https://docs.python.org/3/library/colorsys.html). Modul. –
Ich nehme an, Sie möchten 3D-Rendering von Grund auf neu erstellen. Es ist jedoch viel einfacher, eine vorhandene 3D-Engine zu verwenden. Ich schlage vor, dass Sie sich [POV-Ray] (http://www.povray.org/) ansehen. –
@ PM2Ring die HSL-Lösung ist genau das, was ich brauchte. Sie sollten das als Antwort hinzufügen. –