|
2 / 2 / 0
Регистрация: 24.04.2015
Сообщений: 102
|
||||||
Сравнение изображений19.10.2016, 13:18. Показов 6023. Ответов 6
Метки нет (Все метки)
Написана функция, которая сравнивает два изображения и вычисляет смещение одного относительно другого по осям Х и Y. В функции используются принцип максимизации нормированной корреляции.
Собственно проблема в следующем: на больших изображениях, размером 3000 на 3000 пикселей программа ДОЛГО выполняется. Хотелось бы узнать способы оптимизации. Код представлен ниже: W, H - ширина и высота изображения (предполагается, что изображения имеют одинаковые W и Н)
0
|
||||||
| 19.10.2016, 13:18 | |
|
Ответы с готовыми решениями:
6
Сравнение изображений Сравнение изображений Сравнение изображений OpenCv |
|
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
|
|
| 19.10.2016, 13:47 | |
|
OpenMP - https://software.intel.com/ru-... studio-xe/,
NVIDIA CUDA Toolkit - https://developer.nvidia.com/cuda-zone Добавлено через 1 минуту OpenCV - http://opencv.org/
0
|
|
|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
|
| 19.10.2016, 13:51 | |
|
Это что за задача? Оптически поток, стереореконструкция? А то там специальные методы для этого есть. Можно не корреляцией это считать, а поиском ключевых точек (тем же SURF, SIFT) и считать смещение по ним.
Вообще, а как ты хотел - у тебя свертка для изображения 3000*3000 = 9000000 целей для этой свертки, плюс в каждом нужно рассматривать окрестность определенного радиуса... А скорость доступа к памяти много медленнее выполнения арифметических инструкций. Плюс куча вложенных циклов. Можно попробовать раскрутить некоторые внутренние (а мб, и не только внутренние) циклы - в OpenCV сделано именно так, и на практике прирост в скорости действительно существенный. Также можно не считать каждый раз выражения типа `(y-j+yc)`, а посчитать их перед циклом по х-ам, запомнить в переменную и потом пользоваться. Я говорил, что тут скорее дело в скорости памяти, но все же. Зачем выполнять лишние инструкции, когда их можно избежать? Возможно, нужно распараллелить это дело (к примеру, разбить изображение на N полос, где N - кол-во потоков, и каждую полосу обрабатывать в отдельном потоке. OpenMP позволяет это легко сделать. Ну и можешь не каждый пиксель сравнивать, а с определенным шагом - но тут нужно смотреть на саму задачу, все от нее зависит, а твою я пока не совсем понимаю (точнее, итоговую цель). PS У тебя и радиус огромный... Однозначно раскрутку циклов делай, должна помочь (https://ru.wikipedia.org/wiki/... 0%BB%D0%B0).
1
|
|
|
2 / 2 / 0
Регистрация: 24.04.2015
Сообщений: 102
|
|
| 19.10.2016, 14:00 [ТС] | |
|
monolit, хорошо, попробую! спасибо!
Добавлено через 3 минуты В терминах "Оптический поток, стереореконструкция" не очень разбираюсь. Просто нужно сравнить два изображения. Было предложено сделать с помощью подсчета корреляции, но как выяснилось (это и в интернете пишут), что способ этот медленный. Нашла так же то, что есть и другие алгоритмы, более эффективные, но они как - то сложны для моего понимания. А какие вообще есть возможности сравнить изображения? Находила много статей на Хабре и так - на просторах интернета. Но там все поверхностно - скорее для тех, кто знаком с этой темой. А я новичок.
0
|
|
|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
|
| 19.10.2016, 14:45 | |
Сообщение было отмечено M4753 как решение
Решение
M4753, как вариант - ключевые точки (SURF/SIFT) или использование гистограмм. Эти должны быть намного быстрее. А в твоем случае, возможно, нужно просто понизить разрешение и сравнивать изображения в уменьшенном виде. Чем не вариант.
Вот одни из первых ссылок в гугле: http://stackoverflow.com/quest... -algorithm. Если хочется ускорить свой - раскручивай циклы и используй OpenMP. Ставлю на наибольший выигрыш от раскрутки внутренних циклов (которые по радиусу) - их и раскрутить легче будет. С внешними уже придется повозиться... Хотя, можно пробовать комбинацию. Ну и лишних вычислений старайся не делать где этого можно избежать...
1
|
|
|
2 / 2 / 0
Регистрация: 24.04.2015
Сообщений: 102
|
|
| 19.10.2016, 14:50 [ТС] | |
|
Спасибо, попробую!!!
0
|
|
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
| 20.10.2016, 12:44 | |
|
Одно изображение содержит второе без преобразований и шума?
0
|
|
| 20.10.2016, 12:44 | |
|
Помогаю со студенческими работами здесь
7
Сравнение текста из файла и сравнение с текстом в программе char - Dev C++
Сравнение изображений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
|