Мне нужно реализовать на C++ алгоритм настройки уровней изображения, который работает аналогично функции «Уровни» в Photoshop или GIMP. Т.е. Входные данные: цветное изображение RGB, подлежащее настройке, настройка, точка, точка черного, точка средних тонов, вывод из/в значения. Но я пока не нашел информации о том, как выполнить эту настройку. Возможно, кто-то порекомендует мне описание алгоритма или материалы для изучения.
На данный момент я сам придумал следующий код, но он не дает ожидаемого результата, аналогичного то, что я вижу, например, в GIMP, изображение становится слишком светлым. Ниже приведен мой текущий фрагмент кода:
const int normalBlackPoint = 0;
const int normalMidtonePoint = 127;
const int normalWhitePoint = 255;
const double normalLowRange = normalMidtonePoint - normalBlackPoint + 1;
const double normalHighRange = normalWhitePoint - normalMidtonePoint;
int blackPoint = 53;
int midtonePoint = 110;
int whitePoint = 168;
int outputFrom = 0;
int outputTo = 255;
double outputRange = outputTo - outputFrom + 1;
double lowRange = midtonePoint - blackPoint + 1;
double highRange = whitePoint - midtonePoint;
double fullRange = whitePoint - blackPoint + 1;
double lowPart = lowRange / fullRange;
double highPart = highRange / fullRange;
int dim(256);
cv::Mat lut(1, &dim, CV_8U);
for(int i = 0; i < 256; ++i)
{
double p = i > normalMidtonePoint
? (static_cast(i - normalMidtonePoint) / normalHighRange) * highRange * highPart + lowPart
: (static_cast(i + 1) / normalLowRange) * lowRange * lowPart;
int v = static_cast(outputRange * p ) + outputFrom - 1;
if(v < 0) v = 0;
else if(v > 255) v = 255;
lut.at(i) = v;
}
....
cv::Mat sourceImage = cv::imread(inputFileName, CV_LOAD_IMAGE_COLOR);
if(!sourceImage.data)
{
std::cerr
Подробнее здесь: https://stackoverflow.com/questions/395 ... age-levels
Алгоритм регулировки уровней изображения ⇐ C++
Программы на C++. Форум разработчиков
1722722555
Anonymous
Мне нужно реализовать на C++ алгоритм настройки уровней изображения, который работает аналогично функции «Уровни» в Photoshop или GIMP. Т.е. Входные данные: цветное изображение RGB, подлежащее настройке, настройка, точка, точка черного, точка средних тонов, вывод из/в значения. Но я пока не нашел информации о том, как выполнить эту настройку. Возможно, кто-то порекомендует мне описание алгоритма или материалы для изучения.
На данный момент я сам придумал следующий код, но он не дает ожидаемого результата, аналогичного то, что я вижу, например, в GIMP, изображение становится слишком светлым. Ниже приведен мой текущий фрагмент кода:
const int normalBlackPoint = 0;
const int normalMidtonePoint = 127;
const int normalWhitePoint = 255;
const double normalLowRange = normalMidtonePoint - normalBlackPoint + 1;
const double normalHighRange = normalWhitePoint - normalMidtonePoint;
int blackPoint = 53;
int midtonePoint = 110;
int whitePoint = 168;
int outputFrom = 0;
int outputTo = 255;
double outputRange = outputTo - outputFrom + 1;
double lowRange = midtonePoint - blackPoint + 1;
double highRange = whitePoint - midtonePoint;
double fullRange = whitePoint - blackPoint + 1;
double lowPart = lowRange / fullRange;
double highPart = highRange / fullRange;
int dim(256);
cv::Mat lut(1, &dim, CV_8U);
for(int i = 0; i < 256; ++i)
{
double p = i > normalMidtonePoint
? (static_cast(i - normalMidtonePoint) / normalHighRange) * highRange * highPart + lowPart
: (static_cast(i + 1) / normalLowRange) * lowRange * lowPart;
int v = static_cast(outputRange * p ) + outputFrom - 1;
if(v < 0) v = 0;
else if(v > 255) v = 255;
lut.at(i) = v;
}
....
cv::Mat sourceImage = cv::imread(inputFileName, CV_LOAD_IMAGE_COLOR);
if(!sourceImage.data)
{
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/39510072/algorithm-for-adjustment-of-image-levels[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия