python - 拉普拉斯金字塔后的重建图像与原始图像不一样

标签 python image opencv image-processing

我正在将 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)

作为引用,请查看重建图像和原始图像。

Reconstructed Image

Original Image

最佳答案

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

L = gpA[j-1] - GE

代替:

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

关于python - 拉普拉斯金字塔后的重建图像与原始图像不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30498713/

相关文章:

Python:在切换键和值时创建新字典

c++ - OpenCV 3.0 和 c++ (windows)

python - 使用 opencv-python 在 Windows 中禁用网络摄像头的自动对焦

linux - ImageMagick - 裁剪、调整大小和连接两张图片

python - 如何在 OpenCV 中绘制一组闭合的多边形曲线,将每个段表示为不同的颜色(即在彩虹色空间中)?

python - 函数的可变对象参数位于何处?有符号表吗? (Python教程4.7.1)

python - Tkinter:将标准输出重定向到只读文本

python - ChromeDriver 没有打开窗口但测试仍然成功

swift - 所选图像不会更改之前显示的图像

javascript - 使用CSS让点击的缩略图显示全尺寸