Как найти изменение цвета фона в изображении с помощью MATLAB? - PullRequest
1 голос
/ 17 февраля 2012

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

Я хочу отслеживать вертикальную координату (Y), при которой фон меняется с черного насерый.В связи с этим у меня возникают следующие вопросы:

1) Как определить изменение цвета?Есть ли способ найти изменение цвета (градиент) между последовательными пикселями в MATLAB?

2) Как увеличить видимость фона?Есть ли фильтр для улучшения видимости фона?

Ответы [ 3 ]

0 голосов
/ 18 февраля 2012

, чтобы очистить изображение, вы можете использовать: -

im=imread('C:\Users\khaled\Documents\MATLAB\image.jpg');
clear_image= histeq(im);

Чтобы обнаружить изменение в черном и сером, используйте следующий код: -

im=rgb2gray(image);
BW = edge(I,'canny');
[B,L] = bwboundaries(BW,'noholes');
boundary = B{1}; 
plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2);
0 голосов
/ 14 ноября 2013

Попробуйте vision.ForegroundDetector из панели инструментов системы Computer Vision.

0 голосов
/ 17 февраля 2012

Если ваша камера достаточно неподвижна, а фон достаточно постоянен, вы можете просто вычесть последующие изображения. Если различия между дымчатой ​​частью вашего изображения и фоном достаточно велики, то область, в которой дым не был в предыдущем кадре и находится в новом кадре, покажет гораздо большую разницу, чем остальное изображение. Это даст вам местоположение «нового» дыма, и вы можете использовать его для отслеживания того, как далеко продвинулся дым.

...