Прогноза за съответствие на цвета на пиксела

За целите на сканирането на изображения бих искал пиксел (който мога да получа от UIImage) да съответства (за определен процент) на предварително зададен цвят.

Кажете розово. Когато сканирам изображението за пиксели, които са розови, искам функция да върне процент от това колко RGB стойността в пиксела изглежда като моята предварително зададена RGB стойност. По този начин бих искал всички (е, повечето) розови пиксели да станат „видими“ за мен, а не само точните съвпадения.

Някой запознат ли е с подобен подход? Как бихте направили нещо подобно?

Благодаря предварително.

АКТУАЛИЗАЦИЯ: Благодаря на всички ви за отговорите досега. Приех отговора от Damien Pollet, защото ми помогна допълнително и стигнах до извода, че изчисляването на векторната разлика между два RGB цвята го прави перфектно за мен (в този момент). Може да се нуждае от някои настройки с течение на времето, но засега използвам следното (в цел c):

float difference = pow( pow((red1 - red2), 2) + pow((green1 - green2), 2) + pow((blue1 - blue2), 2), 0.5 );

Ако тази разлика е под 85, приемам цвета като мой целеви цвят. Тъй като алгоритъмът ми не се нуждае от точност, аз съм добре с това решение :)

АКТУАЛИЗАЦИЯ 2: при търсенето си на повече открих следния URL адрес, който може да бъде доста (недостатъчно) полезен за вас, ако търсите нещо подобно.

http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios


person Jake    schedule 15.01.2011    source източник
comment
Зависи какво имате предвид под pink. Тъмно розовото все още ли е розово?   -  person 6502    schedule 15.01.2011


Отговори (2)


Бих казал, че просто изчислете векторната разлика спрямо вашия целеви цвят и проверете дали нормата е по-малка от някакъв праг. Подозирам, че някои цветови пространства са по-добри от други в това, може би HSL или L*ab, тъй като те отделят яркостта от самия цветен нюанс и така могат да представляват малка перцептивна разлика чрез по-малък цветен вектор...

Освен това вижте този свързан въпрос

person Damien Pollet    schedule 15.01.2011

Научен отговор: Трябва да конвертирате двата цвята в цветовото пространство на LAB и да изчислите евклидовото разстояние там. Тази стойност се нарича още deltaE.

LAB пространството е разработено (използвайки тестови лица) точно поради тази причина: така че различните цветови двойки с еднакви разстояния в tnis пространството да съответстват на еднакви възприемани цветови разлики.

Въпреки това изглежда, че не търсите съвпадение на конкретен цвят, а по-скоро цветова гама (да речем всички тонове на кожата). Това може да изисква повече информация от потребителя, отколкото просто референтен цвят + толеранс deltaE:

  • референтен цвят с 3 толеранса за нюанс, наситеност и яркост

  • облак от референтни цветни проби

  • ...

person Kris Van Bael    schedule 15.01.2011