我对Leptonica有一个有趣的问题,我想知道其他SO成员是否见过。
我正在执行歪斜校正操作,并且存在严重的伪影问题,以至于没有人会正确地接受结果,这会使图像质量下降的幅度超过其带来的好处。
这是产生偏移校正操作的相关代码:

    // Make a black and white version for deskew calculations
    l_int32 thresh;
    PIX * deskewbw = pixMaskedThreshOnBackgroundNorm(pix,NULL,10,15,25,10,2,2,0.1,&thresh);
    NSLog(@"Used threshold of %d to normalize image for deskew",thresh);

    // Find the local skew
    PTA * ptas, *ptad;
    pixGetLocalSkewTransform(deskewbw, 0, 0, 0, 0.0, 0.0, 0.0, &ptas, &ptad);

    // Cleanup the first B/W version
    pixDestroy(&deskewbw);

    // Deskew the original image
    PIX * deskewgray = pixProjectivePtaGray(pix, ptad, ptas, 128);

    // Reduce the deskewed original image to B/W
    pixbw = pixMaskedThreshOnBackgroundNorm(deskewgray, NULL, 10, 15, 25, 10, 2, 2, 0.1, &thresh);
无论是使用此功能还是使用pixDeskewLocal函数(其功能类似),我都会得到一些非常难看的结果,其中包括隔行扫描的线条效果:

只是为了比较,这是原始(略有倾斜)的图像:

无论原稿是黑色还是白色前景,都会发生这种情况,并且在偏移量更大的区域会更加严重。在这一点上,我很想让iOS为我做渲染,以避免针对该特定操作使用Leptonica,但这增加了我的工作流程中的转换次数,我宁愿避免。
之前是否有人遇到过/克服了这个问题?关于为什么发生这种情况/如何解决的任何指示?

最佳答案

您可以使用函数pixEndianByteSwap(pixbw);来解决此问题。

关于ios - 修复Leptonica 1.68中的局部偏斜,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8167784/

10-11 01:03