我有一个关于 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);
来解决这个问题。
我是一名优秀的程序员,十分优秀!