ios GPUImage, плохой результат обработки изображений с изображениями небольшого размера?

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

Площадь посева:https://www.dropbox.com/s/e3mlp25sl6m55yk/IMG_0709.PNG

Плохой результат = (https://www.dropbox.com/s/wtxw7li6paltx21/IMG_0710.PNG

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

    //first off, try to grayscale the image using iOS core Image routine
    UIImage * grayScaledImg = [self grayImage:sourceImage];

    GPUImagePicture *imageSource = [[GPUImagePicture alloc] initWithImage:grayScaledImg];

    GPUImageAdaptiveThresholdFilter *stillImageFilter = [[GPUImageAdaptiveThresholdFilter alloc] init];
    stillImageFilter.blurRadiusInPixels = 8.0;
    [stillImageFilter prepareForImageCapture];

    [imageSource addTarget:stillImageFilter];
    [imageSource processImage];
    UIImage *retImage = [stillImageFilter imageFromCurrentlyProcessedOutput];

    [imageSource removeAllTargets];

    return retImage;
}


+ (UIImage *) grayImage :(UIImage *)inputImage
{
    // Create a graphic context.
    UIGraphicsBeginImageContextWithOptions(inputImage.size, NO, 1.0);
    CGRect imageRect = CGRectMake(0, 0, inputImage.size.width, inputImage.size.height);

    // Draw the image with the luminosity blend mode.
    // On top of a white background, this will give a black and white image.
    [inputImage drawInRect:imageRect blendMode:kCGBlendModeLuminosity alpha:1.0];

    // Get the resulting image.
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return outputImage;
}

ОБНОВИТЬ:

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

Спасибо, Брэд, Ларсон! я изменяю ширину изображения до ближайшего кратного 8 и получаю то, что хочу

-(UIImage*)imageWithMultiple8ImageWidth:(UIImage*)image
{
    float fixSize = next8(image.size.width);

    CGSize newSize = CGSizeMake(fixSize, image.size.height);
    UIGraphicsBeginImageContext( newSize );
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

float next8(float n) {

    int bits = (int)n & 7; // give us the distance to the previous 8
    if (bits == 0)
        return (float)n;
    return (float)n + (8-bits);
}

Ответы на вопрос(1)

Ваш ответ на вопрос