Как построить график зависимости интенсивности от длины волны для спектра?

Необходимо построить график зависимости интенсивности от длины волны для спектра. Также мне нужно определить длины волн по графику (изображение ниже):

введите сюда описание

С помощью какой программы я могу это сделать? Я искал в гугле программы, но все ли они работают с видео (например, терменвоксовый спектрометр)?. Мне нужно работать над образом.


person Zero149    schedule 24.10.2017    source источник


Ответы (1)


Это не график, а картинка. В любом случае вы можете начать следующим образом.

Вы можете загрузить изображение с помощью scipy. Затем, в простейшем случае, сделайте горизонтальный разрез, который даст вам интенсивность в зависимости от положения пикселя.

import scipy.misc as misc
import matplotlib.pyplot as plt

img = misc.imread('spectrum.png', mode='L')
mid_line = img[len(img)//2]
plt.plot(mid_line)
plt.show()

Там есть некоторая фоновая яркость. Выполнение вертикального усреднения дало бы более гладкие спектры (img_mean = img.mean(axis=0)).

Затем вам нужно найти способ «откалибровать» положение пикселей по длине волны. Для этого вам нужен внешний источник «правды», который, я не знаю, у вас есть. Например, можно сказать, что максимум на зеленой линии составляет 510 нм (пиксель 405), а на ярко-синей — 460 нм (пиксель 302). Затем, в зависимости от вашей экспериментальной установки, вы можете сказать, что расстояние в пикселях линейно с длиной волны, и тогда у вас есть преобразование.

Надеюсь, это поможет вам немного.

person Ignacio Vergara Kausel    schedule 24.10.2017
comment
После компиляции я получу пустой граф. В чем проблема? - person Zero149; 24.10.2017
comment
Забыл сделать нарезку, исправил код. - person Ignacio Vergara Kausel; 24.10.2017