2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 14:09 
Нужно найти длину волны используя RGB характеристики. У меня есть код, который находит RGB характеристики данного пикселя.

Используется синтаксис Python
from PIL import Image
im = Image.open('laba.png')
rgb_im = im.convert('RGB')
print(rgb_im)
r, g, b = rgb_im.getpixel((159, 150))
print(r, g, b)
 

В интернете есть информация как по длине волны получить RGB. Данный вариант мне не подходит. Также я нашел ссылку, в которой есть способ нахождения, но я не уверен в нем.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 14:20 
А этого попросту нельзя сделать. Каждой длине волны соответствует тройка RGB(и не одна, потому что яркость можно менять), но в обратную сторону это неверно.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 14:23 
Существуют альтернативные пути решение данной проблемы?

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 14:58 
Аватара пользователя
Какой проблемы? Какую длину волны Вам надо получить?

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:11 
Цитата:
Какой проблемы? Какую длину волны Вам надо получить?


У меня есть фотография спектральных линий ртутной лампы. Нужно найти длину волны каждой линии.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:19 
12d3 в сообщении #1259890 писал(а):
Каждой длине волны соответствует тройка RGB(и не одна, потому что яркость можно менять)
Притом как минимум важно, какое из всевозможных пространств с названиями …RGB используется. Часто это sRGB, но не всегда. Плюс конкретный дисплей может быть неоткалиброван.

pbm в сообщении #1259897 писал(а):
У меня есть фотография спектральных линий ртутной лампы. Нужно найти длину волны каждой линии.
Значит, вместо неизвестного преобразования экрана неизвестное преобразование фотоаппарата. Тут можно попытаться использовать одновременно и расстояния между линиями, и «цвета», но, во-первых, это будет в отсутствии иной информации лишь некая эвристика и, во-вторых, с весьма неудобными вычислениями, которые я даже не до конца сейчас представляю. Лучше попытайтесь получить другие исходные данные получше.

К тому же это ведь весьма известный спектр, так? Найдите длины волн по какому-нибудь справочнику. Чем это не устраивает?

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:28 
pbm в сообщении #1259897 писал(а):
У меня есть фотография спектральных линий ртутной лампы. Нужно найти длину волны каждой линии.

надо приделать линейку типа вот так:
Изображение

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:28 
Цитата:
К тому же это ведь весьма известный спектр, так? Найдите длины волн по какому-нибудь справочнику

Я знаю, что в интернете есть спектр и длины волн ртутной лампы.
Цитата:
Чем это не устраивает?

Я хотел проверить, возможно ли найти длины волн имея только фотографии спектра.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:31 
arseniiv в сообщении #1259898 писал(а):
Плюс конкретный дисплей может быть неоткалиброван.

Вот как раз именно дисплей тут не при чем :lol:

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:38 
pbm в сообщении #1259903 писал(а):
Я хотел проверить, возможно ли найти длины волн имея только фотографии спектра.
Тогда самый лучший ответ — нет. Такими задачами заниматься не стоит. А если вы, например, собрались делать спектрограф из веб-камеры, его можно будет с помощью известных спектров сначала откалибровать, и потом вы будете знать, где на изображении какая длина волны, не обращая внимание на цвет.

-- Сб окт 28, 2017 17:38:31 --

wrest в сообщении #1259905 писал(а):
Вот как раз именно дисплей тут не при чем :lol:
Я это писал до появления ответа про фотографию. :-)

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:41 
pbm в сообщении #1259903 писал(а):
Я хотел проверить, возможно ли найти длины волн имея только фотографии спектра.

если у вас есть raw фотка (то есть значения снятые с фотодиодов за цветными фильтрами) плюс точно промерянная спектральная характеристика фотоаппарата (объектив+матрица+постобработка до помещения чисел в raw), плюс априорное знание что на фотке только спектральные цвета, то вот тогда может быть можно.
а если у вас какое-то непонятно какое RGB то нет, нельзя. можно только сказать что цвет примерно красный или примерно фиолетовый.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:45 
В идеале (считая, что регистрирующая аппаратура не искажает цвета, что на самом деле ниоткуда не следует): взять какую-то реализацию функции $\lambda \mapsto \{ R,G,B\}$ и решать обратную задачу. Как уже было замечено, решение может быть не единственным.

В реальности: отснять один или несколько спектров сравнения (надо, чтобы весь рабочий диапазон был достаточно хорошо заполнен линиями, поэтому одного спектра может оказаться мало), для которых известны длины волн линий, получить для этих линий $\{ R,G,B\}$, по этим данным табулировать функцию $\lambda \mapsto \{ R,G,B\}$ для данной аппаратуры, после чего уже с ней реализовать предыдущий пункт.

 
 
 
 Posted automatically
Сообщение28.10.2017, 15:46 
 i  Тема перемещена из форума «Программирование» в форум «Помогите решить / разобраться (Ф)»
Причина переноса: к программированию этот вопрос отношения не имеет, задача сугубо физическая.

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:51 
Если я сфотографирую не весь спектр, а каждую линию отдельно. Это упростит ситуацию, находжегння длины волны?

 
 
 
 Re: Python: как конвертировать RGB в длину волны?
Сообщение28.10.2017, 15:55 
Pphantom в сообщении #1259909 писал(а):
В реальности: отснять один или несколько спектров сравнения (надо, чтобы весь рабочий диапазон был достаточно хорошо заполнен линиями, поэтому одного спектра может оказаться мало), для которых известны длины волн линий, получить для этих линий $\{ R,G,B\}$, по этим данным табулировать функцию $\lambda \mapsto \{ R,G,B\}$ для данной аппаратуры, после чего уже с ней реализовать предыдущий пункт.
Мне кажется, тогда лучше всё-таки зафиксировать камеру относительно остальной аппаратуры, и после этого работать только с положением, а не цветами точек. Ну, конечно, если там что-то развинтится, и спектр на изображении сдвинется, цвета дадут какую-то коррекцию, но обычно, вроде, ничего не развинчивается.

pbm в сообщении #1259911 писал(а):
Если я сфотографирую не весь спектр, а каждую линию отдельно. Это упростит ситуацию, находжегння длины волны?
Наоборот.

 
 
 [ Сообщений: 21 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group