问题标签 [dct]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
video - 视频压缩:什么是离散余弦变换?
我已经实现了一种称为离散余弦变换的图像/视频变换技术。该技术用于 MPEG 视频编码。我的算法基于以下 URL 中提出的想法:
http://vsr.informatik.tu-chemnitz.de/~jan/MPEG/HTML/mpeg_tech.html
现在我可以转换黑白图像的 8x8 部分,例如:
进入这张图片,右上角有所有重要信息。转换后的块如下所示:
现在,我需要知道如何利用这种转变?我想检测同一图像(或另一个图像)中代表良好匹配的其他 8x8 块。
另外,这种转变给了我什么?为什么存储在转换图像右上角的信息很重要?
jpeg - 在 BMP 到 JPEG 转换方面需要帮助
我正在编写一个 C++ 程序来将 BMP 图像转换为 JPEG。
这是我试图遵循的基本算法:
- 将 RGB 颜色空间转换为 Y,Cb,Cr..
- 将 Cb 和 Cr 向下采样 2(这意味着对于 2*2 的每个方形块有 4 个不同的 Y 值,但 1 个 Cb 和 1 个 Cr 值
- 将 DCT 应用于每个 8*8 像素的数据单元...
- 然后使用标准的 Cb 和 Cr 量化表对 DCT 系数进行量化。
- 做之字形排序。
- 使用霍夫曼编码分别对直流和交流系数进行编码。
- 写入正确的标头并将霍夫曼编码值写入文件...
我已经验证我正确地执行了上述操作,但我仍然遇到以下问题:
- 生成的 JPEG 未正确显示。
- 我制作了一个小的 8*8 24 位(颜色深度)bmp 文件,完全填充了颜色值 R=10 B=10 和 G=100...所有 64 个像素都是相同的颜色..
- 我在每一步得到的数据如下......
- BMP 标头大小为 40
- 标头大小 40
- 宽度 8
- 身高 8
- 飞机数量 1
- 每像素位数 24
- 图像尺寸 194
- x 分辨率每米像素 2834
- y 分辨率每米像素 2834
- 颜色数 0
- 小鬼颜色数 0
- (R,B,G)=(10,10,100)的Y Cb Cr换算为(62,-29,-37)
所以让我们首先考虑 Y 分量。
Y 分量的 DCT 系数为:
在量化之后,对于 Y 分量,我得到的单个数据单元的锯齿形排序是这样的。
现在上述之字形顺序数组的霍夫曼编码为:
- Y直流编码:00111110
- Y ac 编码:1010(对于 ac 霍夫曼表(亮度 Y)EOB 值为 1010)
- Cb和Cr分量的类似哈夫曼编码如下:
- cb直流编码:11000010
- cb ac 编码:01(对于 ac 霍夫曼表(色度 Cb,Cr)EOB 值为 01)
- cr直流编码:110101110
- cr 交流编码:01
我得到的最终霍夫曼代码是:
001111101010110000100111010111001 长度33
所以为了使它能被8整除,填充1就完成了。
这里每个 0 或 1 实际上是一个位,需要按原样存储在 JPEG 文件中,但由于我们不能逐位写入文件,因此总共取 8 位并转换为基数中的整数值10 并存储到一个 1 字节的字符中。
任何人都可以就我哪里出错提供任何建议吗?
image-processing - DCT 压缩 - 块大小,选择系数
我试图了解块大小的影响以及在 DCT 压缩中选择系数的最佳策略。基本上我想问我在这里写了什么:
让我们假设最原始的压缩。制作图像块。在每个博客上执行 DCT 并将一些系数归零。
据我了解,块越小越好。较小的块意味着像素更相关,因此 DCT 光谱中的能量更“紧凑”。在快速变化的图像(高频)中应该更加强调它。
假设我们将一定百分比的系数归零,什么会产生最佳图像质量,小块还是大块?假设我们保留 10%、25%、50%、75%,你会说这是不同百分比的不同答案吗?
另一个问题是如何选择你保持不变的系数。免得说我必须根据位置而不是能量做出决定。你会从左上角取一个正方形吗?我已经平均了 DCT 频谱中的许多块,并得出最好的结论是从左上角取一个三角形。你怎么看?
希望我们能进行有效的讨论。
java - Java:获取 JPEG DCT 系数直方图
我需要一个 Java 库、代码片段……来获取 JPEG 文件的 64 个 DCT 系数的频率分布。
有任何想法吗?谢谢!
java - Java 参数传递 int[][]
我正在尝试用 java 编写一个简单的 DCT 算法。我希望我的 findDCT 方法有一个像这样的整数数组作为参数:
现在,我将如何声明此方法并能够将 'int[][] f' 作为参数传递,而不是使用声明为私有变量并在当前类的构造函数中初始化的 f[][]?
java - java中DCT和IDCT算法的问题
在这里,我的 DCT 算法类带有“applyDCT”和“applyIDCT”方法。从技术上讲,在对 0 到 255 之间的随机整数的 2x2 表进行正向 DCT(离散余弦变换)之后,然后立即对这些数字进行反向 DCT,我们应该回到我们最初拥有的原始整数。就我而言,情况并非如此。我在这里做错了什么?
这是随之而来的主要课程:
以下是结果示例:
如上所示,“Back to f”并没有显示最初包含在 f 中的相同值...
image-processing - 从编码图像和视频中提取 DCT 系数
有没有办法从编码的图像和视频中轻松提取 DCT 系数(和量化参数)?任何解码器软件都必须使用它们来解码块 DCT 编码的图像和视频。所以我很确定解码器知道它们是什么。有没有办法将它们暴露给使用解码器的人?
我正在实施一些直接在 DCT 域中工作的视频质量评估算法。目前,我的大部分代码都使用 OpenCV,所以如果有人知道使用该框架的解决方案,那就太好了。我不介意使用其他库(也许是 libjpeg,但这似乎只适用于静止图像),但我主要关心的是尽可能少地做特定于格式的工作(我不想重新发明轮子并编写我自己的解码器)。我希望能够打开 OpenCV 可以打开的任何视频/图像(H.264、MPEG、JPEG 等),如果它是块 DCT 编码的,以获得 DCT 系数。
在最坏的情况下,我知道我可以编写自己的块 DCT 代码,通过它运行解压缩的帧/图像,然后我会回到 DCT 域。这几乎不是一个优雅的解决方案,我希望我能做得更好。
目前,我使用相当常见的 OpenCV 样板来打开图像:
我用于视频的代码同样简单:
在这两种情况下,我都得到了 BGR 格式的 3 通道IplImage
。有什么方法可以得到 DCT 系数吗?
matlab - 在 MATLAB 中查找量化层的数量
我正在研究图像处理,并且我有一张经过 DCT 处理并量化为 512 x 512 矩阵的 8 x 8 块的图像,现在我必须找出图像有多少量化级别。我是否需要获取左上角的像素并将其放入数组中,然后将其放置在图形调用上hist
?
java - DCT 系数的范围 MATLAB
我试图找到一个 8 x 8 块的系数因图像的不同块而变化的范围。我是否需要为 matlab 中是否有函数的值生成直方图?
compression - DCT压缩
DCT(D iscrete C osine T转换)如何帮助压缩声音(或任何波状数据)?根据 DCT 变换,结果有 N 个输入值和 N 个输出值。压缩在哪里以及如何实现?