Время прочтения: 2 мин.

Для начала необходимо, используя open source решения по RPA выгрузить все фото из автоматизированной системы, содержащей в себе историю кредитных заявок клиента и переименовать их так, чтобы каждое фото соответствовало номеру кредитной заявки. Фото выгружаются по заранее сформированному пулу кредитных заявок.

Далее, используя open source решения по сравнению фото, необходимо провести сравнительный анализ изображений методом «все ко всем».

Подробнее рассмотрим алгоритм сравнения фото. Первое, что нам необходимо — каждое из имеющихся изображений уменьшаем до размера 8*8. На выходе должны остаться только значимые чисти фото (низкие частоты).

image = cv2.imread(FileName)
resized = cv2.resized(image, (8,8), interpolation = cv2.INTER_AREA)

Справочно: В изображениях, высокие частоты необходимы для детализации, а низкие частоты отвечают за структуру.

Второе – обесцвечиваем результат предыдущего шага (получаем чёрно-белое изображение).

gray_image = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)

Следующим шагом мы рассчитываем среднюю величину яркости.

avg = gray_image.mean()

Далее — бинаризация картинки. Избавляемся от всех пикселей, кроме тех, которые больше среднего (придаем им значение «1», при этом все остальные принимаем за «0»).

ret, threshold_image = cv2.threshold(gray_image, avg, 255,0)

Затем строим хэш. Здесь мы из полученных 64 значений «1» и «0» картинки получаем одно 64-битное значение хэша.

hash=""
fox x in range(8):
	fox y in range(8):
		val=threshold_image[x,y]
		if val==255:
			_hash=_hash+"1"
		else:
			_hash=_hash+"0"
return  _hash

Завершающий шаг – попарное сравнение hash.

def CompareHash (hash1, hash2):
	l=len(hash1)
	i=0
	count=0
	while i<1:
		if hash1[i]!=hash2[i]:
			count=count+1
		i=i+1
	return count

По результатам сравнения мы получаем список, содержащий следующие поля: Image1 (номер сравниваемой кредитной заявки), Image2(номер сопоставляемой кредитной заявки), Match (вероятность совпадения). Далее данный список передается экспертам для более детального аудита. В данном случае при стремлении к нулю вероятность совпадения наиболее велика.

В качестве примера можем привести сравнение трех изображений:

Результат сравнения первых двух фото:

1110011110011011101111111111111111011111100010010001000000000000
1111111111111111111111111100001110000001100000001100000100000000
21

Результат сравнения второго и третьего изображения:

0111111011111111111111111110001111000001110000010000010000000000
1111111111111111111111111100001110000001100000001100000100000000
10

В данном случае явно наблюдается стремление к нулю. Но так как в рамках нашей задачи необходимо выявить абсолютно идентичные фото, экспертами изучаются только фото в диапазоне от 0 до 5.

Инструмент позволяет значительно ускорить анализ данного вопроса. Рекомендуем использовать его для решения подобных задач.