我有下面的图像:
Initial Image
我使用下面的代码旋转图像:
from skimage.transform import rotate
image = cv2.imread('122.png')
rotated = rotate(image,34,cval=1,resize = True)
一旦我执行了这段代码,我就会收到下面的图像:
Rotated Image
为了消除图像上的模糊,我使用下面的代码来设置一个阈值。任何非白色的东西都变成黑色(所以灰色的点变成黑色)。代码如下:
ret, thresh_hold = cv2.threshold(rotated, 0, 100, cv2.THRESH_BINARY)
plt.imshow(thresh_hold)
而不是得到一个很好的清晰图片,我收到以下:
Choppy Image
有人知道我可以做些什么来提高图像质量,或者调整阈值来创建更清晰的图像吗?
我试图将阈值调整为不同的值,但这将图像更改为全黑或全白色。
2条答案
按热度按时间w1jd8yoj1#
要提高旋转图像后的图像质量,您可以尝试在旋转图像时使用不同的插值方法。
skimage.transform
中的rotate
函数有一个mode
参数,允许您指定要使用的插值方法。默认值为constant
。这意味着它对输入图像边界之外的像素使用常量值(由cval
参数指定)。您可以尝试使用不同的插值方法,例如
bilinear
或bicubic
,在某些情况下可以提供更好的结果。例如,以下代码使用bilinear
插值方法:除了使用不同的插值方法外,您还可以尝试在对旋转图像应用阈值时使用不同的阈值。
cv2.threshold
函数有一个threshold
参数,用于指定要使用的阈值。默认情况下,该参数设置为0。这意味着值小于或等于0的所有像素都将被设置为0(黑色),所有其他像素将设置为maxval
参数指定的最大值(在您的情况下为100)。或者,您也可以使用
cv2.THRESH_BINARY_INV
旗标来取代cv2.THRESH_BINARY
,以反转临界值结果,让值小于或相等127的像素设定为255(白色),而所有其他像素则设定为0(黑色)。下列程式码显示如何执行此动作:ua4mk5z42#
一种方法是在Python/OpenCV中简单地对图像进行反锯齿处理。
要做到这一点,一个简单的转换到灰度。然后模糊图像,然后应用图像的拉伸。
调整模糊sigma以更改抗锯齿。
输入:
结果: