Khludenkov 1 Report post Posted July 21, 2020 Здравствуйте. Имеется объектив, в котором присутствует цветовое виньетирование. Т. е. у него в центре изображение более зелёное, и соответственно, более сиреневое по краям. Сейчас мы делаем снимок белого листа, и определяем коэффициенты неоднородности. Затем для каждого кадра видео потока применяем эти коэффициенты. Софт написали сами, очевидно, что не оптимально и не без ошибок. Скажите, может быть уже имеются готовые решения? Share this post Link to post Share on other sites
Smorodov 572 Report post Posted 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 Share this post Link to post Share on other sites
Khludenkov 1 Report post Posted July 22, 2020 Большое спасибо. Цитата Снимаете 2 кадра A и B. Снимаем белый лист? Share this post Link to post Share on other sites
Smorodov 572 Report post Posted 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)). Ну и разделить попиксельно исходное изображение на полученные коэффициенты. Share this post Link to post Share on other sites
Khludenkov 1 Report post Posted July 22, 2020 Я ещё пробовал переводить в пространство HSV, там определять какой сдвиг по Н даёт объектив. И затем для каждого кадра видео тоже переводить из rgb в hsv, там делать коррекцию, затем назад в rgb. Честно говоря, наверное идея хорошая, но с реализацией не вышло. Ни по точности, ни по скорости... Share this post Link to post Share on other sites
Smorodov 572 Report post Posted July 22, 2020 переводить в hsv и выделять цвет, можно было бы, если бы изображение листа было без цвета, но так не бывает в реальном мире лист не белый и не серый, он тоже цветной. Share this post Link to post Share on other sites
Khludenkov 1 Report post Posted July 22, 2020 2 минуты назад, Smorodov сказал: переводить в hsv и выделять цвет, можно было бы, если бы изображение листа было без цвета, но так не бывает в реальном мире лист не белый и не серый, он тоже цветной. А как же баланс белого обычно по белому листу делают? Или это не правильный подход? Share this post Link to post Share on other sites
Smorodov 572 Report post Posted July 22, 2020 Можно попробовать белый ящик для фотографирования разных вещей, может оттуда белый более менее получится взять. Погуглите "light box for photography". Share this post Link to post Share on other sites
Smorodov 572 Report post Posted August 12, 2020 Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP 1 Share this post Link to post Share on other sites
Khludenkov 1 Report post Posted August 13, 2020 15 часов назад, Smorodov сказал: Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP Большое спасибо. Совсем даже не поздно. У нас всё очень неспешно происходит... 15 часов назад, Smorodov сказал: Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP Но не совсем понял, по какой книге это сделано, вроде ссылка на книгу есть, но что-то не переходит... Share this post Link to post Share on other sites
Khludenkov 1 Report post Posted August 13, 2020 Спасибо. Нашёл Share this post Link to post Share on other sites