2015-09-10 5 views
1

Как эффективно сочетать два изображения - тепловое (80x60) и RGB (640x480)? Если я масштабирую температуру до 640x480, она не масштабируется равномерно или не имеет достаточного качества для обработки на ней. Любые идеи были бы действительно полезными.Как смешивать 80x60 тепловое и 640x480 RGB изображение?

RGB-изображение - http://postimg.org/image/66f9hnaj1/

  • RGB

Тепловое изображение - http://postimg.org/image/6g1oxbm5n/

  • Thermal
+1

Это не совсем понятно, что вы пытаетесь достичь. – torvin

+0

Добавить образцы изображений, совпадают ли изображения? какие изображения представляют и для? какое масштабирование вы используете (ближайший сосед, билинейный, бикубический ...)? для чего используется результат? Какая смесь вам нужна? Как OP предлагает проблемы с производительностью, на какой языковой платформе и HW это будет работать? – Spektre

+0

Я думаю, что нет другого выбора, кроме масштабирования! Возможно, вы могли бы попробовать различные методы интерполяции! –

ответ

-1

Предполагая что изображения не были захвачены с использованием одной камеры, вам нужно отметить, что две камеры могут иметь разные параметры. Кроме того, если это две камеры, они, вероятно, не расположены в одном и том же мировом положении (смещение).

Чтобы решить эту проблему, вам необходимо получить встроенную калибровочную матрицу каждой из камер и найти смещение между ними.

Затем вы можете найти трансформацию между пикселем в одной камере и другой. К сожалению, если у вас нет какой-либо информации о глубине сцены, вы можете сделать с калибровочной матрицей, чтобы получить направление лучей от положения камеры до мира.

Простым подходом было бы игнорировать смещение (при условии, что сцена не слишком близко к камере) и просто преобразуйте пиксель.

p2=K2*(K1^-1 * p1) 

Используя это, вы можете построить новое изображение, которое является составной частью обоих.

Более сложный подход состоит в том, чтобы восстановить трехмерную структуру сцены, найдя функции, которые вы можете сопоставить между обоими изображениями, а затем триангулируйте точку с обоими лучами.

2

Если вы масштабируете разрешение теплового изображения с коэффициентом 8 и используете Bilinear Interpolation, вы должны получить более плавный, менее блочный результат.

При объединении спутниковых изображений различного разрешения (я говорю о спутниковых снимках, потому что это моя специальность), вы, как правило, использовать высокое разрешение изображение в качестве канала Lightness или L дать вам очевидное разрешение и детализацию в формах, потому что человеческий глаз хорош в обнаружении контраста, а затем использует изображения с низким разрешением, чтобы заполнить каналы Hue и Saturation, или a и b, чтобы дать вам цветные градации, которые вы надеетесь увидеть.

Итак, в конкретных терминах я бы рассмотрел преобразование RGB в Lab или HSL colourspace и сохранение канала L. Возьмите тепловое изображение и увеличьте его на 8, используя билинейную интерполяцию, и используйте результат как a, или b, или H или S, и, возможно, заполните оставшийся канал тем, который имеет наибольшее отклонение от RGB. Затем преобразуйте результат обратно в RGB для изображения с ложным цветом. Трудно сказать, не видя изображений или не зная, что вы надеетесь найти в них. Но в общих чертах это был бы мой подход. НТН.

Примечание: Учитывая, что a из Lab colourspace управления красный/зеленый отношения, я бы, наверное, попытаться положить термические данные в этом канале, так что, как правило, чтобы показать больше красного «горячее» тепловой канал.

Обновлено Ответ

Хорошо, теперь я могу видеть ваши изображения и у вас есть еще пару проблем ... во-первых, изображения не выровнены, или зарегистрированы, друг с другом, не собирается, чтобы помочь - попробуйте использовать штатив ;-) Во-вторых, ваше изображение RGB очень плохо разоблачено, поэтому на самом деле он не будет вносить столько подробностей, особенно в тени, в комбинированное изображение.

Так, во-первых, я использовал ImageMagick в командной строке, чтобы до размера теплового изображения, как это:

convert thermal.png -resize 640x480 thermal.png 

enter image description here

Затем я использовал Photoshop, чтобы сделать сырой выравнивания/регистрации. Если вы хотите попробовать это, самый простой способ - поместить два изображения в отдельные слои того же документа и установить режим наложения верхнего слоя на Difference. Затем используйте Move Tool (ярлык v), чтобы переместить верхнее изображение вокруг, пока экран не станет черным, что означает, что детали находятся друг на друге, а при вычитании они достигают нуля, то есть черный. Затем обрезайте, чтобы изображения были выровнены и выключили один слой и сохранили, затем снова включите этот слой, а другой слой - и снова сохраните.

Теперь, я использовал ImageMagick снова разделить эти два изображения в Lab слоев:

convert bigthermalaligned.png -colorspace Lab -separate thermal.png 
convert rgbaligned.png -colorspace Lab -separate rgb.png 

, который дает мне

thermal-0.png => L channel 
thermal-1.png => a channel 
thermal-2.png => b channel 

rgb-0.png => L channel 
rgb-1.png => a channel 
rgb-2.png => b channel 

Теперь я могу взять L канал изображения RGB и a и b каналов теплового изображения и их объединение:

convert rgba-0.png thermal-1.png thermal-2.png -normalize -set colorpsace lab -combine result.png 

И вы получите это чудовище! Очевидно, вы можете играть с каналами и цветами, треногой и соответствующими экспозициями, но вы должны быть в состоянии увидеть некоторые детали изображения RGB - особенно занавески слева, свет, камеру на мобильном телефоне и этикетка на бутылке с водой - вошли в окончательное изображение.

enter image description here

+0

Вопрос был отмечен как OpenCV, а не ImageMagick. –

+0

Да, я видел это, спасибо. Теоретический опыт, который я объяснил в начале моего ответа, в равной степени применим и может быть реализован в любом пакете обработки изображений и будет выступать в качестве самостоятельного ответа.Тот факт, что я решил проиллюстрировать это, с практическим кодом и изображениями, добавляет только ответ на мой взгляд, и тот факт, что я сделал это с использованием ImageMagick, не существует ни здесь, ни там. –