Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Моделирование, изометрия, photoshop, 3d редакторы
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2017, 11:19   #1
4elovek_37
Новичок
Джуниор
 
Регистрация: 31.05.2017
Сообщений: 1
По умолчанию Расчет контраста для канала изображения

Здравствуйте! Нужно рассчитать контраст для заданного канала изображения, полученного со спутника (вообще, для спутников должен поставляться т.н. "Паспортный контраст", но нередко он неизвестен и я пытаюсь посчитать его самостоятельно).

В интернете практически не нашел информации об оценке контраста изображения в целом, а не локального контраста. Из найденного (к, сожалению, ссылки нет под рукой) подошло вот это:

СКО * 2 / MaxVal,
где СКО - среднеквадратичное отклонение, MaxVal - максимальное значение пиксела на изображении

С учетом возможности использования знаковых типов данных, а также возможности неполного использования этих типов, получил примерно вот это:
Код:
/// ...
        double dLimit, dRealMaxGrad, dRealMinGrad;
    int power;
 
    dLimit = sqrt(dMax);//dMax - max для типа данных 
    for(power = 0; power <= dLimit; ++power)
    {
        dRealMaxGrad = pow(2.0, power) - 1;
        if(stats->max > dRealMaxGrad)
            continue;
        else
            break;
    }
 
    if(stats->min < 0)
    {
        dLimit = sqrt(abs(dMin));//dMin - min для типа данных 
        for(power = 0; power <= dLimit; ++power)
        {
            dRealMinGrad = pow(2.0, power);
            if(abs(stats->min) > dRealMinGrad)
                continue;
            else
                break;
        }
    }
    double dContrast_first = stats->stddev * 2 / (dRealMaxGrad + dRealMinGrad);// итоговая формула
Значения оценки получаются в принципе адекватными, но ожиданиям не соответствуют. К примеру, для снимков, где Паспортный контраст ~ 0.20 - 0.30 я получаю оценку в 0.11. Как это интерпретировать я пока не знаю. К тому же, при прогоне на R канале RGB изображения, выглядящего как черный квадрат на белом фоне, способ дал 0.22, что не может быть правдой.

Попробовал изобрести велосипед и считать по-своему: Mid-Range от градиентов с 8 соседними пикселами для каждого пиксела, затем считать Mid-Range от полученных значений для каждой строки, и затем считать Mid-Range от полученного столбца. После этого нормировать полученное значение путем деления на (dRealMaxGrad + dRealMinGrad).
Результаты, полученные данным способом, лежат ближе к ожидаемым (к примеру, для упомянутого изображения получил 0,25), но не слишком стабильны, и самое главное, у меня нет математического обоснования, почему этот метод правильный. А использовать на основе "ну, вроде получилось" - плохая идея.

Кто-нибудь сталкивался с подобной задачей, может быть подскажете гарантированных способов получить контраст для канала?

И не менее важный вопрос - у кого-нибудь не завалялось изображений с заранее известным контрастом?
4elovek_37 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу немножко похулиганить:))) комментировать футбольные мачти в прямом эфире. Как я думаю, для этого нужно настроить передатчик на ту же частоту, что и звуковая волна от ТВ-канала ak167 Микроконтроллеры, робототехника, схемотехника, 3D принтеры 14 13.09.2016 16:23
Телевизионный алгоритм изменения контраста. Mr_freeman Помощь студентам 0 15.11.2012 20:08
1С загрузка канала Mortimoro Операционные системы общие вопросы 1 11.07.2011 22:56
Расчет количества пикселей для отображения записи Lokos Общие вопросы Delphi 11 07.04.2011 08:33
Antialiasing для ARGB канала BOBAH13 Общие вопросы по программированию, компьютерный форум 1 10.05.2010 22:15