我有750多张像'test.png'
这样的图片,我需要减去'vig-raw.png'
中的暗角,我刚刚开始使用opencv-python
,所以“我甚至不知道我不知道什么”。
使用GIMP,我对'vig-raw.png'
进行去饱和处理以创建'vig-desat.png'
,然后使用Color将其转换为Alpha以创建'vig-alpha.png'
。
这是我尝试从'test.png'
中减去'vig-alpha.png'
。
import cv2 as cv
import numpy as np
img1 = cv.imread('test.png',0)
img1 = cv.cvtColor(img1, cv.COLOR_BGR2BGRA) # add alpha channel to RGB image
print(img1[0][0]) # show alpha
img2 = cv.imread('vig-alpha.png',flags=cv.IMREAD_UNCHANGED) # read RGBA image
print(img2[0][0]) #show alpha
img3 = cv.subtract(img1, img2)
img3 = cv.resize(img3, (500,250))
print(img3[0][0]) # show alpha
cv.imshow('result',img3)
cv.waitKey()
cv.destroyAllWindows()
然而,这是'result'
。我需要在整个图像中产生均匀的阴影,同时保持原始颜色不变。我不知道这类事情的正确术语,而且很难用我所知道的来寻找解决方案。提前感谢。
编辑:根据Rotem
的回答,图像文件格式很重要。StackOverflow将我发布的PNG文件转换为JPEG,这在检查他们的回答时确实影响了结果。查看我在下面Rotem
的回答上留下的评论以了解更多信息。
1条答案
按热度按时间cyvaqqii1#
晕影模板不应被减去,而应被缩放。
渐晕校正过程称为Flat-field correction,适用于:
第一个月
C = (R - D) * G
当
D
为暗场或暗帧时。我们没有暗帧样本-我们可以假设暗帧全为零。
假设D = 0,则校正公式为:
G = m / F
C = R * G
m
=mean(F)
,并且F
适用于vig-alpha
。是一米九氮一。
对于计算
G
(将其命名为inv_vig_norm
,我们可以使用以下阶段):vig-alpha.png
作为灰度,并将其转换为范围[0,1]内的浮点型(vig_norm
应用F
):m
除以F
:C = R * G
-用inv_vig_norm
缩放img1
:为了去除噪声和伪影,我们可能会在
vig
上应用中值模糊和高斯模糊(可能需要,因为网站将vig-alpha.png转换为JPEG格式)。代码示例:
结果:
img1
:inv_vig_norm
:img2
: