Я бы, по крайней мере, сравнил с интенсивностью i=R+G+B
...
Для ROI подобных масок вы можете использовать любые методы пороговых значений (адаптивный порог является лучшим) но если ваше результирующее изображение не является маской ROI и должно напоминать визуальные особенности исходного изображения, то лучшее из известных мне преобразований - использовать дизеринг .
Идея, лежащая в основе сглаживания черно-белого изображения, заключается в преобразовании серых шкал в черно-белые изображения, сохраняющие затенение.Результат часто шумный, но сохраняет гораздо больше визуальных деталей.Здесь простой наивный C ++ дизеринг (извините, не кодер Python):
picture pic0,pic1;
// pic0 - source img
// pic1 - output img
int x,y,i;
color c;
// resize output to source image size clear with black
pic1=pic0; pic1.clear(0);
// dithering
i=0;
for (y=0;y<pic0.ys;y++)
for (x=0;x<pic0.xs;x++)
{
// get source pixel color (AARRGGBB)
c=pic0.p[y][x];
// add to leftovers
i+=WORD(c.db[picture::_r]); // _r,_g,_b are just constants 0,1,2
i+=WORD(c.db[picture::_g]);
i+=WORD(c.db[picture::_b]);
// threshold white intensity is 255+255+255=765
if (i>=384){ i-=765; c.dd=0x00FFFFFF; } else c.dd=0;
// copy to destination image
pic1.p[y][x]=c;
}
То же самое, что и в приведенной выше ссылке, но с использованием только черного и белого.i
- это накопленная интенсивность, которая будет размещена на изображении.xs,ys
- это разрешение, а c.db[]
- это доступ к цветному каналу.
Если применить это к цветному изображению следующим образом:
Результат выглядит следующим образом:
Как вы можете видеть все детали, где сохранились, но появляются шумные узоры ... Для печати былоиногда разрешение изображения умножается для повышения качества.Если вы поменяете наивные 2, вложенные в петли, с лучшим рисунком (например, квадраты 16x16 и т. Д.), То шум будет сохраняться вблизи артефактов ограничения источника.Существуют также подходы, использующие псевдослучайные паттерны (поместите остаток i
рядом с исходным пикселем в случайном месте), который даже лучше ...
Но для размытия BW достаточно наивного подхода в качестве артефактоввсего один пиксель в размере.Для цветного сглаживания артефакты могут создавать нежелательные горизонтальные линии размером в несколько пикселей (зависит от того, используется ли неправильная палитра, чтобы соответствовать худшей палитре, более крупные артефакты ...)
PS только для сравнениядругие выходы порогового значения ответа - это то же самое изображение, сглаженное: