移除彩色图像的虚化滤镜

问题描述 投票:1回答:1

我是Python OpenCV图像处理的新手。我想去除图像的边框轮廓阴影,如下图所示。我检查了'如何去除扫描图像的阴影'这对我来说是行不通的。这可能吗?

Shadow image example

python opencv image-processing
1个回答
2
投票

你的边框轮廓阴影的问题让我想起了渐变滤镜。你可以看看这个 疑问 如果你想了解更多关于它的信息。所以本质上我们的任务是去除虚化滤镜的效果,然后增加亮度。

#####VIGNETTE
import cv2
import numpy as np

img = cv2.imread('Paris.jpg')
height, width = img.shape[:2]
original = img.copy()
# generating vignette mask using Gaussian kernels
kernel_x = cv2.getGaussianKernel(width, 150)
kernel_y = cv2.getGaussianKernel(height, 150)
kernel = kernel_y * kernel_x.T
mask = 255 * kernel / np.linalg.norm(kernel)

# applying the mask to each channel in the input image
for i in range(3):
    img[:, :, i] = img[:, :, i] * mask


cv2.imshow('Original', original)
cv2.imshow('Vignette', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

为了抵消这个效果,改变 img[:, :, i] = img[:, :, i] * maskimg[:, :, i] = img[:, :, i] / mask

Result

现在我们需要增加图像的亮度。为此,我们将把图像转换为HSV,并增加饱和度和值矩阵的值。要想更详细的了解,你可以参考这篇 文章.

#THE FULL CODE
import cv2
import numpy as np

img = cv2.imread('shadow.jpg')
original = cv2.imread('bright.jpg')
height, width = img.shape[:2]
# generating vignette mask using Gaussian kernels
kernel_x = cv2.getGaussianKernel(width, 150)
kernel_y = cv2.getGaussianKernel(height, 150)
kernel = kernel_y * kernel_x.T
mask = 255 * kernel / np.linalg.norm(kernel)

test = img.copy()
for i in range(3):
    test[:, :, i] = test[:, :, i] / mask    

hsv = cv2.cvtColor(test, cv2.COLOR_BGR2HSV)
hsv = np.array(hsv, dtype = np.float64)
hsv[:,:,1] = hsv[:,:,1]*1.3 ## scale pixel values up or down for channel 1(Lightness)
hsv[:,:,1][hsv[:,:,1]>255]  = 255
hsv[:,:,2] = hsv[:,:,2]*1.3 ## scale pixel values up or down for channel 1(Lightness)
hsv[:,:,2][hsv[:,:,2]>255]  = 255
hsv = np.array(hsv, dtype = np.uint8)
test = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)


cv2.imshow('Original_bright', original)
cv2.imshow('Original_dark', img)
cv2.imshow('Result', test)
cv2.waitKey(0)
cv2.destroyAllWindows()

Result

与原亮图像的对比结果。

Result without vignette

如果不使用反色阶滤镜,结果会是怎样的。

© www.soinside.com 2019 - 2024. All rights reserved.