Кто-нибудь знает название метода, используемого обработчиками изображений (например, Photoshop или Gimp), чтобы выбрать регион с похожими цветами? Кроме того, может ли кто-нибудь указать какую-либо ссылку для объяснения этого метода (с кодом C ++, если это возможно)?
Если вам интересно, это может быть примером проверки, похож ли цвет на другой.
Он также использует толерантность, как волшебная палочка из 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;
}
Других решений пока нет …