У меня большой набор данных с фотографиями, и я пытаюсь найти дубликаты. Дубликаты, с которыми я имею дело, имеют то же решение (размеры) и кажутся для меня точными копиями - я не могу их отделить. Однако они сохраняются с немного разными параметрами сжатия (различное качество JPEG или JPEG против PNG и т. Д.). К сожалению, это также дает мне много ложных срабатываний - изображения, которые очень похожи, но разные - например, две фотографии, которые были сделаны в быстрой последовательности, поэтому у человека на фотографии немного отличается выражение лица. Я хотел бы избежать этих визуально разных изображений, обнаруженных как дубликаты.
Поэтому я подумал «настоящий» дубликат отделяет. Я выбрал только изображения, которые имеют одинаковый полученный паш (расстояние хамминга = 0). Затем попытались вычислить, насколько разные две фотографии используют 2 разных подхода: средняя квадратная ошибка и TM_SQDIFF_NORMED от OpenCV. К сожалению, оба дают мне очень ненадежные и часто нелогичные результаты. У меня есть 3 фотографии:
photo A . Оригинал PNG, сохраненный как jpeg:
Фото b . То же самое, что , но сохранено с максимальным качеством jpeg:
< /p>
photo c < /strong>. То же самое, что , но плохо отредактировано для изменения выражения лица:
< /p>
Все 3 изображения имеют одинаковый фаш. Если я быстро переключаюсь между и b в своем просмотре фотографии, я вообще не могу сказать разницу. В a и c однако разница сразу же заметна. К сожалению, и RMSE, и SQDIFF дают мне противоположный результат, по порядку: < /p>
< /th>
a & b < /th>
a & c < /th >
< /tr>
< /thead>
rmse < /td>
0.011931 < /td>
0.003523
< /tr>
sqdiff < /td>
0.000465
0.000040>
Таким образом, оба дают мне более меньшую ошибку при сравнении 2 визуально разных изображений a & c . Я предполагаю, что это связано с шумом, который сжатие JPEG добавляет в против b , который не воспринимается человеческим глазом. Я попытался визуализировать разницу, вычитая два изображения и получаю следующие результаты:
| a - b | Выглядит совершенно черный, если я действительно не повышу яркость - только тогда я вижу облако точек, составляющее шум. | a - c | Однако ясно показывает отредактированную часть (губы в центре -путе).
Мой вопрос: - как мне правильно определить разницу, которую я вижу и расскажу об этом Два случая, помимо надежно?double GetSqdiffNormed(Mat img1, Mat img2)
{
using var imgRes = new Mat();
CvInvoke.MatchTemplate(img1, img2, imgRes, TemplateMatchingType.SqdiffNormed);
return (float)imgRes.GetData().GetValue(0, 0);
}
double GetRMSE(Mat img1, Mat img2)
{
img1.ConvertTo(img1, DepthType.Cv32F, 1.0 / 255);
img2.ConvertTo(img2, DepthType.Cv32F, 1.0 / 255);
using var imgRes = new Mat();
CvInvoke.Subtract(img1, img2, imgRes);
CvInvoke.Multiply(imgRes, imgRes, imgRes);
var sum = CvInvoke.Sum(imgRes).ToArray().Sum();
return Math.Sqrt(sum / (imgRes.Width * imgRes.Height * imgRes.NumberOfChannels));
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ually-same
Обнаружение изображений, которые визуально одинаковы ⇐ C#
Место общения программистов C#
-
Anonymous
1739870650
Anonymous
У меня большой набор данных с фотографиями, и я пытаюсь найти дубликаты. Дубликаты, с которыми я имею дело, имеют то же решение (размеры) и кажутся для меня точными копиями - я не могу их отделить. Однако они сохраняются с немного разными параметрами сжатия (различное качество JPEG или JPEG против PNG и т. Д.). К сожалению, это также дает мне много ложных срабатываний - изображения, которые очень похожи, но разные - например, две фотографии, которые были сделаны в быстрой последовательности, поэтому у человека на фотографии немного отличается выражение лица. Я хотел бы избежать этих визуально разных изображений, обнаруженных как дубликаты.
Поэтому я подумал «настоящий» дубликат отделяет. Я выбрал только изображения, которые имеют одинаковый полученный паш (расстояние хамминга = 0). Затем попытались вычислить, насколько разные две фотографии используют 2 разных подхода: средняя квадратная ошибка и TM_SQDIFF_NORMED от OpenCV. К сожалению, оба дают мне очень ненадежные и часто нелогичные результаты. У меня есть 3 фотографии:
photo [b] A [/b]. Оригинал PNG, сохраненный как jpeg:
Фото [b] b [/b]. То же самое, что [b] [/b], но сохранено с максимальным качеством jpeg:
< /p>
photo [b] c < /strong>. То же самое, что [/b], но плохо отредактировано для изменения выражения лица:
< /p>
Все 3 изображения имеют одинаковый фаш. Если я быстро переключаюсь между [b] [/b] и [b] b [/b] в своем просмотре фотографии, я вообще не могу сказать разницу. В [b] a [/b] и [b] c [/b] однако разница сразу же заметна. К сожалению, и RMSE, и SQDIFF дают мне противоположный результат, по порядку: < /p>
< /th>
a & b < /th>
a & c < /th >
< /tr>
< /thead>
rmse < /td>
0.011931 < /td>
0.003523
< /tr>
sqdiff < /td>
0.000465
0.000040>
Таким образом, оба дают мне более меньшую ошибку при сравнении 2 визуально разных изображений [b] a [/b] & [b] c [/b]. Я предполагаю, что это связано с шумом, который сжатие JPEG добавляет в [b] [/b] против [b] b [/b], который не воспринимается человеческим глазом. Я попытался визуализировать разницу, вычитая два изображения и получаю следующие результаты:
| [b] a [/b]-[b] b [/b] | Выглядит совершенно черный, если я действительно не повышу яркость - только тогда я вижу облако точек, составляющее шум. | [b] a [/b]-[b] c [/b] | Однако ясно показывает отредактированную часть (губы в центре -путе).
[b] Мой вопрос: [/b] - как мне правильно определить разницу, которую я вижу и расскажу об этом Два случая, помимо надежно?double GetSqdiffNormed(Mat img1, Mat img2)
{
using var imgRes = new Mat();
CvInvoke.MatchTemplate(img1, img2, imgRes, TemplateMatchingType.SqdiffNormed);
return (float)imgRes.GetData().GetValue(0, 0);
}
double GetRMSE(Mat img1, Mat img2)
{
img1.ConvertTo(img1, DepthType.Cv32F, 1.0 / 255);
img2.ConvertTo(img2, DepthType.Cv32F, 1.0 / 255);
using var imgRes = new Mat();
CvInvoke.Subtract(img1, img2, imgRes);
CvInvoke.Multiply(imgRes, imgRes, imgRes);
var sum = CvInvoke.Sum(imgRes).ToArray().Sum();
return Math.Sqrt(sum / (imgRes.Width * imgRes.Height * imgRes.NumberOfChannels));
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79447718/detecting-images-that-are-visually-same[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия