Доброго времени суток!
Необходимо реализовать алгоритм сравнения изображений механизм должен сравнивать два изображения средствами С# или в виде подключаемой библиотеки с набором требований. В случае если на рисунке, который сравниваю, найдены изменения, возвращаю True, если изменений не найдено False:
Требования:
Быстрое сравнение больших изображений
Алгоритм:
Делим изображение на регионы 8х8. Для разрешения 1600х1200 получаем 200 х 150=30 000 регионов. Адресуем их двухбайтным числом.
В зависимости от номера кадра (K) обработка различается (порядок размеров такой 8, 4, 8, 2, 8, 4, 8, 1, …)
1. Если K % 2 == 0 (номер кадра четный)
a. Выбираем случайный пиксель в регионе
b. Получаем цвет выбранного пикселя из нового кадра
c. Получаем цвет выбранного пикселя из переданного кадра
d. Если цвет совпадает считаем что регионы совпадают, переходим к следующему
e. Если цвет не совпадает передаем регион пользователю (2 байта номер региона, 192 байта 64 пикселя по 3 байта на пиксель)
2. Если (K 1) % 4 == 0 (кадры номер 1, 5, 9, 13 и т. д.)
a. Выбираем 4 случайных пикселя (по одному в четырех регионах 4х4) и для каждого выполняем шаги
b. Получаем цвет выбранного пикселя из нового кадра
c. Получаем цвет выбранного пикселя из переданного кадра
d. Если цвет не совпадает считаем что регионы различаются передаем регион пользователю
e. Если цвет совпадает переходим к следующему пикселю. Если все 4 пикселя совпадают переходим к следующему региону
3. Если (K 3) % 8 ==0 (кадры номер 3, 11, 19 и т.д.)
a. Выбираем 16 случайных пикселей (по одному в шестнадцати регионах 2х2) и для каждого выполняем шаги
b. Получаем цвет выбранного пикселя из нового кадра
c. Получаем цвет выбранного пикселя из переданного кадра
d. Если цвет не совпадает считаем что регионы различаются передаем регион пользователю
e. Если цвет совпадает переходим к следующему пикселю. Если все 16 пикселей совпадают переходим к следующему региону
4. Если (K 7) % 8 == 0 (кадры номер 7, 15, 23 и т.д.)
a. Перебираем все 64 символа региона и выполняем шаги
b. Получаем цвет выбранного пикселя из нового кадра
c. Получаем цвет выбранного пикселя из переданного кадра
d. Если цвет не совпадает считаем что регионы различаются передаем регион пользователю
e. Если цвет совпадает переходим к следующему пикселю. Если все 64 пикселя совпадают переходим к следующему региону
Опубликован 11.06.2013 в 19:41
Заказ находится в архиве