извлечение признаков с веб-сайтов

это больше теоретический вопрос

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

но то, чего я пытаюсь достичь, - это хорошее сопоставление функций (или извлечение) с веб-сайтов. Это означает, что я сосредоточиваюсь на важных объектах на веб-сайтах, плюс сопоставление, скорее всего, будет между панелями, таблицами или изображениями (изображения наименее вероятны)

использование opencv ORB или SIFT не дает мне очень хороших результатов, вот код, который я использовал:

def feature_matching2(fp1, fp2, num_of_matches):
image1 = cv2.imread(fp1, 0)
image2 = cv2.imread(fp2, 0)

orb = cv2.ORB()

kp1, des1 = orb.detectAndCompute(image1, None)
kp2, des2 = orb.detectAndCompute(image2, None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

matches = bf.match(des1, des2)
matches = sorted(matches, key=lambda x: x.distance)

image3 = cv2.drawMatches(image1, kp1, image2, kp2, matches[:num_of_matches])

plt.imshow(image3)
plt.show()
return sum([match.distance for match in matches[:num_of_matches]])

Итак, еще раз, в основном то, что я ищу, это: 1. способ извлечения важных функций/объектов из снимка экрана веб-сайта 2. алгоритм сопоставления функций, который подходит для больших изображений, содержащих текст.

*изменить* идея состоит в том, чтобы сделать скриншот двух веб-сайтов и сравнить их функции, вообще не используя HTML

благодарю вас


person Shahaf Stein    schedule 12.09.2016    source источник
comment
так вы оцениваете изображения сайтов, или код сайта, что ли? если веб-сайты статичны (шрифт, фон, размер и т. д. не меняются), вы можете использовать простое сопоставление шаблонов. Какова цель?   -  person Micka    schedule 12.09.2016
comment
я отредактировал пост. Я сравниваю особенности двух разных скриншотов веб-сайта. цель состоит в том, чтобы найти как можно больше похожих объектов между двумя   -  person Shahaf Stein    schedule 12.09.2016
comment
как вы определяете подобный объект? Можете ли вы найти пограничные случаи, которые вы бы рассматривали как все еще похожие и недостаточно похожие с примерами изображений?   -  person Micka    schedule 12.09.2016
comment
в конце концов я буду использовать машинное обучение, чтобы сделать вывод, какая степень сходства является достаточно хорошей, а какая нет. но мне нужен надежный способ проверить наличие похожих функций в этих двух сетях.   -  person Shahaf Stein    schedule 12.09.2016
comment
проблема в том, что разные виды сходства вычисляются совершенно по-разному, и поэтому методы, которые вам понадобятся для нахождения такого сходства, могут сильно различаться. Вероятно (если вы не можете привести подходящие примеры), вам понадобится какое-то машинное обучение в самом начале, чтобы найти решение. Возможно, попробуйте глубокое обучение или что-то в этом роде, может быть, оно найдет для вас функции.   -  person Micka    schedule 12.09.2016


Ответы (1)


Я думаю, вы можете попробовать извлечь признаки HOG (гистограмма ориентированных градиентов). Этот метод подсчитывает случаи ориентации градиента в локализованных частях изображения. А простое евклидово расстояние хорошо подходит для сопоставления признаков.

person Gowthaman    schedule 12.09.2016
comment
есть ли шанс, что вы описываете немного дальше? или объясните, как получить евклидово расстояние 2 свиней? свинья простого изображения - это массив из почти 40м слотов - person Shahaf Stein; 12.09.2016
comment
Формула Евклидово расстояние = sqrt(sum((Mi-Ni).^2)) , где Mi – пиксели второго изображения, а Ni — это пиксели первого изображения. HOG возвращает функции в виде размера изображения. Вы можете нормализовать обе функции изображения и применить евклидово расстояние или попиксельно обрабатывать (но оба должны быть одинакового размера). Если полученное значение минимально, то оба изображения подобны. - person Gowthaman; 12.09.2016