1

カメラで撮った画像を白黒に変換して印刷したいのですが、この画像は書類や紙から取ったものです。だから私は次のコードを使用します:

{

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];


}

しかし、画像は完全な二値化であり、部分的な二値化が必要なだけなので、出力画像には非常に多くの鋸歯があります。最初にソース画像をグレースケールに変換してから、最大のコントラストを与えます。画像はとても見栄えがしますが、光と影を取り除くことはできません。任意のアイデア、ありがとう。

4

1 に答える 1

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;
}
于 2014-01-13T21:05:38.363 に答える