Выделение точек на частях изображения по весу цвета

Необходимо выделить заданное количество точек на изображении (фактически на части этого изображения). Более темные части изображения более важны.

Самый простой способ сделать это — выбрать их случайным образом. Но даже удаление использованных точек обычно заканчивалось тем, что некоторые точки располагались слишком близко к другим, особенно при соблюдении веса.

Может после выбора точки вес должен уменьшаться динамически? Не пробовал.

Я заметил, что исходное изображение имеет слишком много разных цветов, поэтому я хотел сгладить его, чтобы отсечь похожие цвета. Однако преобразования в оттенки серого оказалось недостаточно.
Я использовал функции Emgu CV (оболочка OpenCV) для бинаризации изображения. . Затем я попытался рассчитать водосборный бассейн, но расчетные площади не так просто разделить. Как правило, водораздел — это довольно «неинтуитивный» подход к обнаружению более темных мест.

Просто: я хотел бы отметить точки на изображении, начиная с более темных частей - эти части должны быть отмечены чаще, чем более светлые. Точки должны быть разбросаны по группам похожих цветов, чтобы не накапливаться в соседних местах.

Алгоритм не обязательно должен быть точным. Это может дать другие результаты в следующих итерациях. Количество точек будет не очень большим от 10 до 150-200.

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

Чтобы представить, что я имею в виду, посмотрите на картинку ниже. Он содержит выбранные точки (кол-во ~20). В основном выбираются более темные участки. Точки не должны появляться в тех же местах после следующей итерации. Но я хочу выбрать точки на более светлых участках, когда их количество будет выше.

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

Изображение после выбора точек


person peo    schedule 19.11.2010    source источник
comment
В вашем вопросе отсутствуют некоторые ключевые части. У вас есть противоречие между равномерными/случайными и более темными частями, взвешенными выше. Вы должны очистить это. Сколько еще должна стоить темная область. Является ли одна черная точка на белом поле темной областью? Какое отношение этот разговор об уменьшении количества цветов имеет к выбору случайных точек?   -  person Albin Sunnanbo    schedule 19.11.2010
comment
Я сделал некоторые пояснения по поводу того, что я имею в виду.   -  person peo    schedule 19.11.2010
comment
Можете ли вы показать пример входного файла, а также ожидаемый результат?   -  person bjoernz    schedule 21.11.2010


Ответы (1)


Если я правильно понял ваш вопрос, вам нужен список точек на изображении. Список должен содержать несколько точек из черных областей и несколько точек из белых областей.

Простой подход — перебирать каждый пиксель. Сохраните значение текущего пикселя в переменной 's', затем:

if(s < 64) // Darker
    if(rand() % 5 == 1)
        // Add to list
else      // White
    if(rand() % 25 == 1)
        // Add to list
person Utkarsh Sinha    schedule 22.11.2010
comment
Изображения разные. Речь идет о динамической настройке темноты. - person peo; 22.11.2010
comment
Вы можете взять среднее значение района 5x5 (или больше) и использовать его для расчета порога темноты. - person Utkarsh Sinha; 22.11.2010