Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.172.223.130] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Это кажется простым, пока дело не дойдет до практической реализации... Уже в п.1 могут возникнуть вопросы и для этого достаточно одного контрастного пиксела. Далее начнутся вопросы в п.2 при выборе порога, что считать "достаточно близким"? Ярким примером будет известная иллюзия с шахматной доской, где клетки А и B имеют одинаковый цвет, хотя мы точно можем сказать какая клетка темная и какая светлая. |
Сообщ.
#17
,
|
|
|
Пример функции, переводящей RGB в HSV - можно. type TClRGB = record R: byte; G: byte; B: byte; end; TClHSV = record H: real; S: real; V: real; end; function RGBToHSV(vxRGB: TClRGB): TClHSV; var vyHSV: TClHSV; maxvx, minvx: byte; begin if (vxRGB.R>=vxRGB.G) and (vxRGB.R>=vxRGB.B) then maxvx:=vxRGB.R else if (vxRGB.G>=vxRGB.R) and (vxRGB.G>=vxRGB.B) then maxvx:=vxRGB.G else if (vxRGB.B>=vxRGB.R) and (vxRGB.B>=vxRGB.G) then maxvx:=vxRGB.B; if (vxRGB.R<=vxRGB.G) and (vxRGB.R<=vxRGB.B) then minvx:=vxRGB.R else if (vxRGB.G<=vxRGB.R) and (vxRGB.G<=vxRGB.B) then minvx:=vxRGB.G else if (vxRGB.B<=vxRGB.R) and (vxRGB.B<=vxRGB.G) then minvx:=vxRGB.B; if minvx=maxvx then vyHSV.H:=0 else if (maxvx=vxRGB.R) and (vxRGB.G>=vxRGB.B) then vyHSV.H:=60*(vxRGB.G-vxRGB.B)/(maxvx-minvx) else if (maxvx=vxRGB.R) and (vxRGB.G<vxRGB.B) then vyHSV.H:=60*(vxRGB.G-vxRGB.B)/(maxvx-minvx)+360 else if (maxvx=vxRGB.G) then vyHSV.H:=60*(vxRGB.B-vxRGB.R)/(maxvx-minvx)+120 else if (maxvx=vxRGB.B) then vyHSV.H:=60*(vxRGB.R-vxRGB.G)/(maxvx-minvx)+240; if maxvx=0 then vyHSV.S:=0 else vyHSV.S:=1-minvx/maxvx; vyHSV.V:=maxvx/255; Result:=vyHSV; end; А остальное - вряд ли, т.к. это сильно зависит от конкретных условий задачи. Цитата x128 @ Это кажется простым, пока дело не дойдет до практической реализации... Уже в п.1 могут возникнуть вопросы и для этого достаточно одного контрастного пиксела. Далее начнутся вопросы в п.2 при выборе порога, что считать "достаточно близким"? Это да. Но тут вряд ли можно сразу найти универсальное решение для общего случая. Надо хотя бы знать, что это за сканы на входе. Если это какие-то фотографии или иллюстрации, то, возможно, что чисто чёрного и белого на них вобще не будет. И тогда этот алгоритм тоже не подойдёт. |
Сообщ.
#18
,
|
|
|
С каких это пор? H - Hue (цветовой тон), S - Saturation (насыщенность), V - Value (значение цвета, яркость) https://ru.wikipedia.org/wiki/HSV_(%D1%86%D...B5%D0%BB%D1%8C) Какой у одной точки может быть контраст? Контраст это по определению разность между чем-то. |