zoukankan      html  css  js  c++  java
  • 在python3下使用OpenCV做离散余弦变换DCT及其反变换IDCT

    对图像处理经常用到DCT, Python下有很多带有DCT算法包, 这里使用OpenCV的DCT做变换, 并简单置0部分数据, 再查看反变换图像的效果.


    import numpy as np
    import cv2
    # from matplotlib import pyplot as plt

    y = cv2.imread('window.bmp', 0)
    # print(y.shape)
    cv2.imshow("gray",y)
    y1 = y.astype(np.float32)
    # print(y1.dtype)
    Y = cv2.dct(y1)
    print(Y.shape)
    for i in range(0,240):
         for j in range(0,320):
             if i > 100 or j > 100:
                 Y[i,j] = 0
    cv2.imshow("Dct",Y)
    y2 = cv2.idct(Y)
    # print(y2.dtype)
    cv2.imshow("iDCT",y2.astype(np.uint8))
    cv2.waitKey(0)

    对于320x240的图像, 在频域对大于100的行和列都置零(相当于低通滤波)后, 反变换后图像有点模糊, 但还能还原大致效果.


    image

    cnblogs Tags: , ,
  • 相关阅读:
    安装mysql
    工坊第十天
    工坊第九天
    友链qaq
    About me
    好耶
    [Ynoi2011]初始化
    [Ynoi2013]大学
    [Ynoi2015]盼君勿忘
    [Ynoi2019模拟赛]Yuno loves sqrt technology III
  • 原文地址:https://www.cnblogs.com/gxgl314/p/9282879.html
Copyright © 2011-2022 走看看