2012-10-24 6 views
1

카메라에서 흑백으로 가져온 이미지를 변환하여 인쇄하고 싶습니다.이 이미지는 문서 또는 용지에서 가져 오는 것입니다. 은 그래서 추적 코드를 사용빛과 그림자를 제거하는 방법 GPUImage 필터로

{ 

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

GPUImageAdaptiveThresholdFilter *stillImageFilter = [[GPUImageAdaptiveThresholdFilter alloc] init]; 
stillImageFilter.blurSize = 1; 


[stillImageSource addTarget:stillImageFilter]; 
[stillImageSource processImage]; 

UIImage *outputImg = [stillImageFilter imageFromCurrentlyProcessedOutput]; 
[stillImageSource release]; 
[stillImageFilter release]; 


} 

을하지만 이미지가 전체 이진화이며, 단지 부분적인 진화를 필요로하기 때문에 출력 이미지는 많은 톱니가있다. 그래서 원본 이미지를 먼저 그레이 스케일로 변환 한 다음 최대 콘트라스트를 주면 이미지가보기에 좋지만 빛과 그림자는 제거 할 수 없습니다. 아이디어가 없습니다. 감사합니다.

답변

0

시도는 GPUImageAdaptiveThresholdFilter 후 GPUImageLuminanceThresholdFilter을 적용하고, 'blurSize'속성과 재생

-(UIImage *)doBinarize:(UIImage *)sourceImage 
{ 

GPUImagePicture *imageSource = sourceImage; 

    GPUImageAdaptiveThresholdFilter *stillImageFilter = [[GPUImageAdaptiveThresholdFilter alloc] init]; 
    stillImageFilter.blurRadiusInPixels = 8.0;//play with it 

    GPUImageLuminanceThresholdFilter *stillImageFilter2 = [[GPUImageLuminanceThresholdFilter alloc] init]; 
    stillImageFilter2.threshold = 0.5f;// 
    [stillImageFilter addFilter:stillImageFilter2]; 

    [stillImageFilter prepareForImageCapture]; 



    [imageSource addTarget:stillImageFilter]; 

    [imageSource processImage]; 


    UIImage *retImage = [stillImageFilter imageFromCurrentlyProcessedOutput]; 

    [imageSource removeAllTargets]; 

    return retImage; 
} 
관련 문제