2016-11-24 6 views
1

Я пытаюсь применить черно-белый фильтр, и я добился того же, но после фильтра у меня есть тень, которая беспокоит весь фильтр, поэтому я хотел удалить или уменьшить тень, так что любой, у кого есть идеи, что я должен делать.?Удалить тень из черного и белого фильтров с помощью GPUImage

прикрепление кода я реализовал и выход на того же

enter image description here

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image]; 


GPUImageContrastFilter * stillImageContrastFilter = [[GPUImageContrastFilter alloc]init]; 
stillImageContrastFilter.contrast = 1.0; 

GPUImageSharpenFilter * stillImageSharpenFilter = [[GPUImageSharpenFilter alloc]init]; 
stillImageSharpenFilter.sharpness = 4.0; 

GPUImageGaussianBlurFilter * stillImageBlurFilter = [[GPUImageGaussianBlurFilter alloc]init]; 
stillImageBlurFilter.blurRadiusInPixels = 1.0; 

GPUImageAverageLuminanceThresholdFilter * stillImageThresFilter = [[GPUImageAverageLuminanceThresholdFilter alloc]init]; 
stillImageThresFilter.thresholdMultiplier = 0.88; 

GPUImageChromaKeyFilter * stillImageSmoothFilter = [[GPUImageChromaKeyFilter alloc]init]; 
stillImageSmoothFilter.smoothing = 0.1f; 

[stillImageSource addTarget:stillImageContrastFilter]; 
[stillImageContrastFilter addTarget:stillImageSharpenFilter]; 
[stillImageSharpenFilter addTarget:stillImageBlurFilter]; 
[stillImageBlurFilter addTarget:stillImageThresFilter]; 
[stillImageThresFilter addTarget:stillImageSmoothFilter]; 



[stillImageSmoothFilter useNextFrameForImageCapture]; 

[stillImageSource processImage]; 

UIImage *imgTmp1 = [stillImageSmoothFilter imageFromCurrentFramebuffer]; 
+0

привет, пожалуйста, поделитесь кодом, если вы его решили. – ChanWarde

+0

@ChanWarde pls check https://stackoverflow.com/questions/43714561/opencv-how-to-apply-adaptive-threshold-to-an-image-on-ios/43912645#43912645 –

+0

Я использовал это, но хочу чтобы удалить эту светлую тень из изображения. В моем случае я хочу показать только цвет с равным цветным фоном. – ChanWarde

ответ

0

Вы подаете постоянный порог на изображении с помощью GPUImageAverageLuminanceThresholdFilter. Если освещение меняется на вашем листе бумаги, темные области упадут ниже порога, а более яркие пройдут над ним.

Что вы хотите, это порог, который приспосабливается к местным условиям. Это то, что делает GPUImageAdaptiveThresholdFilter. Он выполняет размытие ящика в области вокруг каждого пикселя, определяет среднюю яркость от этого, и если пиксель выше этой яркости, он отмечен как белый. В противном случае, черный.

Большинство людей, которые делают вид сканирования визитных карточек, которые вы пытаетесь здесь, применяют фильтр, подобный этому, вместо порога изображения.

+0

эй Брэд, вы можете мне помочь в каком-то кодексе, поскольку я новичок в этом фильтре –