gpt4 book ai didi

python - 将 DCT 系数可视化为图像的好方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:47 26 4
gpt4 key购买 nike

我拍了下图:

lizzards

将其分成 8X8 个图 block ,对每个图 block 进行 2D DCT 变换,并将它们切割成每个轴上的前 30 个系数。现在我试图将结果可视化为图像,这将有助于我在 DCT 平面上的直觉。

问题:

  • (0,0) 的 DCT 系数比其他所有的都大
  • 我想看看正系数和负系数之间的区别。

到目前为止,我发现的最佳转换如下:

def visualize_dct(d):
d = np.log(abs(d).clip(0.1))
maxi, mini = d.max(), d.min()
d = 255*(d - mini)/(maxi-mini)
return d

这给了我下面的图片:

dct_visualized

完整代码在这里: http://nbviewer.ipython.org/github/ihadanny/my-py-notebooks/blob/master/img_processing_04.ipynb

有什么更好的主意吗?

最佳答案

找到了:我要找的是直方图均衡化。实现非常简单:

def visualize_dct(d):
d = d + abs(d.min())
h = np.histogram(d, bins=1000, range=(0, d.max()))
c = 255.0*np.cumsum(h[0])/sum(h[0])
new_img = np.zeros(d.shape)
for index,value in np.ndenumerate( d ):
new_img[index] = c[999.0*value/d.max()]
return new_img

单个图 block 的结果:

tile tile_dct

对于整个图像:

whole_image whole_image_dct

(注意简单图 block 和有很多细节的图 block 之间的区别)

关于python - 将 DCT 系数可视化为图像的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com