拉普拉斯金字塔后的重建图像与原始图像不同



我正在将RGB图像转换为YCbCr,然后想要计算相同的拉普拉斯金字塔。在颜色转换之后,我正在用OpenCV的图像金字塔教程上的代码进行实验,以找到图像的拉普拉斯金字塔,然后重建原始图像。但是,如果我将代码中的级别数量增加到更高的数字,例如10,那么重建图像(转换回RGB后)看起来与原始图像不一样(图像看起来模糊-请参阅下面的确切图像链接)。我不确定为什么会发生这种情况。它应该发生时,水平增加或有什么错误的代码?

frame = cv2.cvtColor(frame_RGB, cv2.COLOR_BGR2YCR_CB)
height = 10
Gauss = frame.copy()
gpA = [Gauss]
for i in xrange(height):
    Gauss = cv2.pyrDown(Gauss)
    gpA.append(Gauss)
lbImage = [gpA[height-1]]
for j in xrange(height-1,0,-1):
    GE = cv2.pyrUp(gpA[j])
    L = cv2.subtract(gpA[j-1],GE)
    lbImage.append(L)
ls_ = lbImage[0]     
for j in range(1,height,1):
    ls_ = cv2.pyrUp(ls_)
    ls_ = cv2.add(ls_,lbImage[j])
ls_ = cv2.cvtColor(ls_, cv2.COLOR_YCR_CB2BGR)                
cv2.imshow("Pyramid reconstructed Image",ls_)
cv2.waitKey(0)

参考重构图和原图。

重建图像原始图像

不要使用np.add()np.substract()。他们执行剪辑。使用直-和+矩阵运算符。换句话说,使用:

L = gpA[j-1] - GE

代替:

L = cv2.subtract(gpA[j-1],GE)

pyrDown模糊图像并对其进行downsample,丢失一些信息。保存的金字塔层(gpA[])包含越来越小的图像矩阵,但不保留被拒绝的信息细节(高频信息)。

所以重建后的图像不能显示所有的原始细节

教程:注意:当我们减小图像的大小时,我们实际上是在丢失图像的信息。

相关内容

  • 没有找到相关文章

最新更新