_AliEn_ 0 Жалоба Опубликовано June 20, 2012 Доброго времени суток. Мне поручено за короткий срок разобраться с задачкой на OpenCV, но при выполнении задачки возникли недопонимания.. Вот, собственно, само задание Дано изображение А(W x H) и B (W x H), причем известно, что B = A*G, где * - операция свертки A с ядром G (матрица NxN). Задача, найти ядро G (как матрицу коэффцициентов NxN). Процедура тестирования алгоритма должна выглядеть так. 1. Пользователь задает изображение А как аргумент программы, и параметры ядра (скажем как гауссиана), 2. система автоматически расчитывает изображение B. выводит его на экран (и А тоже). 3. затем ищется оценка G (используя только А и и выводится на экран Предполагается, что для поиска G используется линейная регрессия, а не преобразование фурье. Непонятен (пока) один момент, как в OpenCV задаются параметры ядра? Что такое гауссиан (знаю есть в физике распределение Гаусса)? Спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kilop 7 Жалоба Опубликовано June 21, 2012 Почитай две ссылки, если возникнут вопросы, спрашивай http://robocraft.ru/blog/computervision/427.html http://robocraft.ru/blog/computervision/281.html Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_AliEn_ 0 Жалоба Опубликовано June 21, 2012 Я ознакомился со статьями,спасибо! Осталось понять,как реализуется линейная регрессия в OpenCV. Я делал в поисковике соответствующий запрос, но ничего не нашел по OpenCV. Направьте меня пожалуйста на путь истинный) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 21, 2012 Поисковый запрос "linear regression normal equation" - вам в помощь. Матричные операции в opencv вполне удобоваримые. А можно подробнее, какие переменные подсовываются регрессии ? PS: Задача Blind Deconvolution ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано June 21, 2012 Думаю, что для того чтобы разобраться с линейной регрессий надо прочитать http://en.wikipedia.org/wiki/Linear_regression Решается всё просто. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_AliEn_ 0 Жалоба Опубликовано June 22, 2012 с линейной регрессией разобрался,я думал там что то очень хитрое Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_AliEn_ 0 Жалоба Опубликовано June 24, 2012 Тема приняла неожиданный поворот.. Изложу пожалуй свои мысли, чтобы развеять сомнения. Пусть у меня есть изображение А, я применяю к нему размытие по Гауссу 3х3, получаю картинку B. Чтобы определить матрицу ядра, мне нужно составить матричное уравнение, B = A*g, где * - уже обычная операция умножения матрицы на вектор, а g - вектор столбец элементов матрицы ядра (в данном случае 9 элементов выписанных в столбец), тогда B - вектор столбец пикселей (тоже 9 штук), А - матрица пикселей исходного изображения (9х9 штук). 1. Можно такую модель применить для того, чтобы решить эту задачу? Например, применив метод наименьших квадратов (линейная модель), как вы и предлагали? 2. Чтобы найти N неизвестных, нужно иметь N линейно независимых уравнений. У меня же их получается больше, чем N. Как выбирать нужные уравнения (пиксели)? Это имеет отношение к моему вопросу? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 24, 2012 Почему через DFT не хотите ? Это наиболее естественный метод работы со свертками (через умножение и деление, что может быть проще?). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_AliEn_ 0 Жалоба Опубликовано June 25, 2012 Smorodov, дело в том, что эту задачу меня попросил решить человек из отдела кадров я ранее подобные задачи не решал,поэтому обращаюсь к вам за помощью.. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано June 25, 2012 А - матрица составленная из пикселей исходного изображения 1. Можно такую модель применить для того, чтобы решить эту задачу? Например, применив метод наименьших квадратов (линейная модель), как вы и предлагали? 2. Чтобы найти N неизвестных, нужно иметь N линейно независимых уравнений. У меня же их получается больше, чем N. Как выбирать нужные уравнения (пиксели)? Это имеет отношение к моему вопросу? 1) Да. У вас в условии это так и прописано. 2) Не имеет. При линейной зависимости будет множество решений из которых выбирается минимальное, а оно единственное. Формулу я вам привел там матрицы не квадратные. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_AliEn_ 0 Жалоба Опубликовано June 25, 2012 спасибо большое! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 25, 2012 Матрица 9х9 (точки одного изображения (блок 3х3 вокруг каждого из пикселей блока 3х3). Один блок - одна строка) умножается на вектор (ядро) 9х1 и получается вектор 1х9 (точки другого изображения). Порисуйте на листе в клетку, выпишите уравнения. У меня получилось, если ничего не выйдет изображу, а то лень столько цифр вбивать Есть только одна загвоздка - если матрица 9х9 сингулярная, то её не получится обратить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах