2014-01-24 5 views
1

Кто-нибудь знает имя метода, используемого процессорами изображений (например, Photoshop или Gimp), чтобы выбрать регион с похожими цветами? Кроме того, может ли кто-нибудь указать какую-либо ссылку для объяснения этого метода (с кодом C++, если это возможно)?Выбор области цвета по аппроксимации

+1

Он якобы использует простой алгоритм заливки, как здесь http://www.dailyfreecode.com/code/flood-fill-algorithm-698.aspx с расчетом схожести как расстояние между двумя цветами в RGB пространстве. – SGrebenkin

+0

Большое спасибо, вот что я ищу. –

ответ

1

Если вам интересно, это может быть пример проверки того, похож ли цвет на другой. Он также использует толерантность как волшебную палочку от gimp и paint.net.

Однако этот пример сравнивает разницу в стоимости вместо разницы в цвете или легкости.

/*\ function to check if the color at this position is similar to the one you chose 
|* Parameters: 
|* int color  - the value of the color of choice 
|* int x   - position x of the pixel 
|* int y   - position y of the pixel 
|* float tolerance - how much this pixels color can differ to still be considered similar 
\*/ 

bool isSimilar(int color, int x, int y, float tolerance) 
{ 
    // calculate difference between your color and the max value color can have 
    int diffMaxColor = 0xFFFFFF - color; 
    // set the minimum difference between your color and the minimum value of color 
    int diffMinColor = color; 
    // pseudo function to get color (could return 'colorMap[y * width + x];') 
    int chkColor = getColor(x, y); 
    // now checking whether or not the color of the pixel is in the range between max and min with tolerance 
    if(chkColor > (color + (diffMaxColor * tolerance)) || chkColor < ((1 - tolerance) * diffMinColor)) 
    { 
     // the color is outside our tolerated range 
     return false; 
    } 
    // the color is inside our tolerated range 
    return true; 
} 
+0

спасибо за образец кода. У меня только один вопрос: если у меня есть три цветовых компонента (красный, зеленый, синий), как я могу оценить значение для первого параметра (цвет int)? –

+0

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

Смежные вопросы