Рассчитать изображение интенсивности RMS с помощью opencvPython

Программы на Python
Ответить
Гость
 Рассчитать изображение интенсивности RMS с помощью opencv

Сообщение Гость »


Я хотел бы вычислить интенсивность I(x,y)/Io(x,y).

Во-первых, я читаю изображения с помощью rawpy, потому что у меня есть файлы .nef (Nikon Raw). Затем я использую opencv для преобразования изображений в оттенки серого и вычисляю I(x,y)/Io(x,y). Где I(x,y) — «брют», а Io(x,y) — «инициализация».

Но после разделения двух изображений (cv2.divide) я использую cv2.meanStdDev(test) и получаю значение «Nan».

И когда я рисую «тест» с помощью matplotlib, я получаю следующее:


Изображение


и когда я использую imshow из cv2, я получаю то, что хочу:


Изображение


Я не понимаю, почему я получаю nan из cv2.meanStdDev(test) и разницу между двумя графиками?

импортировать numpy как np импортировать cv2 импортировать сырой импортировать rawpy.enhance импортировать matplotlib.pyplot как plt #################### # Чтение изображения Nikon RAW (NEF) init="/media/alexandre/Transcend/Expérience/Ombroscopie/eau/initialisation/2023-09-19_19-02-33.473.nef" brut="/media/alexandre/Transcend/Expérience/Ombroscopie/eau/DT0.2/2023-09-20_10-34-27.646.nef" bruit="/media/alexandre/Transcend/Expérience/Ombroscopie/eau/bruit-electronique/2023-09-18_18-59-34.994.nef" #################### # Здесь используется библиотека rawpy print("Чтение файла инициализации с помощью Rawpy.") raw_init = rawpy.imread(инит) image_init = raw_init.postprocess(use_camera_wb=True, output_bps=16) print("Размер прочитанного начального изображения:" + str(image_init.shape)) print("Чтение файла брута с использованием Rawpy.") raw_brut = rawpy.imread(брют) image_brut = raw_brut.postprocess(use_camera_wb=True, output_bps=16) print("Размер изображения брюта прочитан:" + str(image_brut.shape)) print("Чтение файла Bruit с использованием Rawpy.") raw_bruit = rawpy.imread(bruit) image_bruit = raw_bruit.postprocess(use_camera_wb=True, output_bps=16) print("Размер прочитанного изображения:" + str(image_bruit.shape)) #################### # (оттенки серого) OpenCV печать (image_init.dtype) init_grayscale = cv2.cvtColor(image_init, cv2.COLOR_RGB2GRAY).astype(float) brut_grayscale = cv2.cvtColor(image_brut, cv2.COLOR_RGB2GRAY).astype(float) bruit_grayscale = cv2.cvtColor(image_bruit, cv2.COLOR_RGB2GRAY).astype(float) print(np.max(brut_grayscale)) печать (init_grayscale.dtype) "тест = (brut_grayscale)/(init_grayscale)" init = init_grayscale-bruit_grayscale test = cv2.divide((brut_grayscale),(init_grayscale)) печать(test.shape) печать(test.dtype) печать (тип (тест)) печать(test.max()) печать(test.min()) #################### # Irms значит, std_dev = cv2.meanStdDev(тест) intensite_rms = std_dev[0][0] print("Интенсивность RMS изображения:", intensite_rms) #################### # Матплотлиб импортировать matplotlib.pyplot как plt plt.imshow(test, cmap='gray') plt.show() # Показать с помощью OpenCV импортировать imutils image_rawpy = imutils.resize(тест, ширина = 1080) cv2.imshow("image_rawpy прочитать файл: ", image_rawpy) cv2.waitKey(0) cv2.destroyAllWindows("image_rawpy прочитать файл: ", image_rawpy) выход:
чтение файла инициализации с использованием rawpy. Размер прочитанного образа инициализации: (5520, 8288, 3) чтение брут-файла с помощью rawpy. Размер изображения брюта: (5520, 8288, 3) чтение файла Bruit с использованием Rawpy. Размер прочитанного изображения шума: (5520, 8288, 3) uint16 37977,0 float64 (5520, 8288) float64 Нэн Нэн Интенсивность изображения RMS: nan ^CTraceback (последний вызов): Файл «ombro.py», строка 62, в plt.show() Файл "/home/alexandre/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", строка 368, в шоу return _backend_mod.show(*args, **kwargs) Файл "/home/alexandre/.local/lib/python3.8/site-packages/matplotlib/backend_bases.py", строка 3544, в шоу cls.mainloop() Файл "/home/alexandre/.local/lib/python3.8/site-packages/matplotlib/backends/backend_qt.py", строка 1023, в основном цикле qt_compat._exec(qApp) Файл "/usr/lib/python3.8/contextlib.py", строка 120, в __exit__ следующий(self.gen) Файл «/home/alexandre/.local/lib/python3.8/site-packages/matplotlib/backends/qt_compat.py», строка 262, в _maybe_allow_interrupt old_sigint_handler(*handler_args)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»