2013-05-17 1 views
1

Я пытаюсь удалить фон UIImage и закончил с помощью порта iOS MagicWand.Смягчает края изображения после применения MagickFloodfillPaintImage

Я смог успешно удалить выбранные пиксели с помощью алгоритма заливки заливки, вызвав метод MagickFloodfillPaintImage. Однако теперь проблема заключается в смягчении острых краев, оставленных процессом удаления наводнений.

Я использую приведенный ниже код, чтобы удалить фон.

PixelIterator* iterator = NULL; 
    PixelWand** pixels = NULL; 
    size_t x; 
    iterator = NewPixelRegionIterator(magick_wand, _touchCoords.x*scale, _touchCoords.y*scale, 1, 1); 
    pixels = PixelGetNextIteratorRow(iterator,&x); 
    bc_wand = pixels[0]; 

    channel = ParseChannelOption("rgba"); 
    status = MagickFloodfillPaintImage(magick_wand, channel, fc_wand, _tolerance, bc_wand, _touchCoords.x*scale, _touchCoords.y*scale, MagickFalse); 
    if (status == MagickFalse) { 
     ThrowWandException(magick_wand); 
    } 

Любая помощь была бы принята с благодарностью!

ответ

0

Похоже, вам нужно сглаживание в MagickFloodfillPaintImage. Однако MagickFloodfillPaintImage не поддерживают его.

Но, к счастью, вы можете использовать традиционную мультисэмплинг-технику для имитации. И это довольно легко:

  1. Изменения размера изображения с большим разрешением (например 100x100 -> 200x200) (Up выборка).
  2. Применить MagickFloodfillPaintImage
  3. Измените размер изображения в оригинальном размере (Вниз выборки).

Качество зависит от соотношения размеров.

Рассмотрим следующий пример (убрать белый фон):

before

Оригинальный алгоритм будет производить жесткие края:

after1

С изменением размера, это могло бы быть гораздо лучше:

enter image description here

+0

Пробовал подход, который вы сказали, но результат не очень хорош. Существуют ли какие-либо другие библиотеки или инструменты iOS, которые можно использовать для удаления фона? Я пробовал OpenCV, и он делает хорошую работу, за исключением того, что у меня есть эта проблема, о которой я говорил здесь http://stackoverflow.com/questions/16637657/opencv-floodfill-replace-pixel-color-with-transparent-pixel – Jugs

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