Khludenkov 1 Жалоба Опубликовано July 21, 2020 Здравствуйте. Имеется объектив, в котором присутствует цветовое виньетирование. Т. е. у него в центре изображение более зелёное, и соответственно, более сиреневое по краям. Сейчас мы делаем снимок белого листа, и определяем коэффициенты неоднородности. Затем для каждого кадра видео потока применяем эти коэффициенты. Софт написали сами, очевидно, что не оптимально и не без ошибок. Скажите, может быть уже имеются готовые решения? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 21, 2020 Готовых решений не знаю, но можно попробовать слепое разделение источников (blind source separation). Снимаете 2 кадра A и B. делаете из них 3 смеси в разных пропорциях. I1=k1*A+(1-k1)*B I2=k2*A+(1-k2)*B I3=k3*A+(1-k3)*B На самом деле это будут смеси из 3 изображений A, B, и виньетки. Раскладываем на 3 источника, затем вычисляем коэффициенты искажения цвета. Что то типа этого: 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Khludenkov 1 Жалоба Опубликовано July 22, 2020 Большое спасибо. Цитата Снимаете 2 кадра A и B. Снимаем белый лист? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 22, 2020 Нет, снимаем любые изображения. Сейчас подумал, что способ будет работать при аддитивной модели искажения i=i_0+i_noise. А здесь, похоже мультипликативная: i=i_0*i_v Так как черное изображение остается черным. PCA пожалуй не разделит в этом случае. Видимо надо сильно размыть изображение белого листа, нормализовать цвет в каждой точке (r=r/norm(rgb), g=g/norm(rgb),b=b/norm(rgb)). Ну и разделить попиксельно исходное изображение на полученные коэффициенты. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Khludenkov 1 Жалоба Опубликовано July 22, 2020 Я ещё пробовал переводить в пространство HSV, там определять какой сдвиг по Н даёт объектив. И затем для каждого кадра видео тоже переводить из rgb в hsv, там делать коррекцию, затем назад в rgb. Честно говоря, наверное идея хорошая, но с реализацией не вышло. Ни по точности, ни по скорости... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 22, 2020 переводить в hsv и выделять цвет, можно было бы, если бы изображение листа было без цвета, но так не бывает в реальном мире лист не белый и не серый, он тоже цветной. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Khludenkov 1 Жалоба Опубликовано July 22, 2020 2 минуты назад, Smorodov сказал: переводить в hsv и выделять цвет, можно было бы, если бы изображение листа было без цвета, но так не бывает в реальном мире лист не белый и не серый, он тоже цветной. А как же баланс белого обычно по белому листу делают? Или это не правильный подход? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 22, 2020 Можно попробовать белый ящик для фотографирования разных вещей, может оттуда белый более менее получится взять. Погуглите "light box for photography". Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 12, 2020 Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Khludenkov 1 Жалоба Опубликовано August 13, 2020 15 часов назад, Smorodov сказал: Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP Большое спасибо. Совсем даже не поздно. У нас всё очень неспешно происходит... 15 часов назад, Smorodov сказал: Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP Но не совсем понял, по какой книге это сделано, вроде ссылка на книгу есть, но что-то не переходит... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Khludenkov 1 Жалоба Опубликовано August 13, 2020 Спасибо. Нашёл Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах