问题标签 [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.

0 投票
2 回答
3392 浏览

python - 使用 Python 的 Scipy DCT-II 做 2D 或 ND DCT

我想使用 scipy 的 DCT-II,因为它已经编码并且速度很快。查看文档,它似乎是一维实现。是否可以以将其用作 3D 实现的方式使用它?我不确定数学。2D 和 3D 实现是否相当于在计算中使用不同维度将 1D 乘以 2 或 3 倍?

0 投票
2 回答
4317 浏览

php - 如何在 PHP 中计算离散余弦变换(DCT)?

我想要的是我当前代码的一个工作的、优化的版本。虽然我的函数确实返回了一个包含实际结果的数组,但我不知道它们是否正确(我不是数学大师,也不知道 Java 代码可以将我的结果与已知实现进行比较)。其次,我希望该功能能够接受自定义表格大小,但我不知道该怎么做。表格大小是否等同于重新采样图像?我是否正确应用了系数?

我的 PHP 函数是 Java 中这篇文章的派生词:Java中 DCT 和 IDCT 算法的问题。我已经重写了 php 和可读性的代码。最终,我正在编写一个脚本,使我能够比较图像并找到相似之处。此处概述了该技术:http ://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html 。

谢谢!

0 投票
1 回答
661 浏览

matlab - 将量化系数保存到文件

我正在尝试读取图像,对其进行 DCT 变换,对其进行量化,然后将量化后的系数保存到将被读入分形编码程序的文件中。

当我解码文件(使用量化系数)时,我得到的只是一些灰屏。这是由于文件的内容还是我错过了其他东西?

0 投票
1 回答
6457 浏览

python - Scipy 的 fftpack dct 和 idct

假设您使用 dct 函数,然后不处理数据并使用逆变换;反转后的数据与转换前的数据不一样吗?为什么会出现浮点问题?这是报告的问题还是正常行为?

任何人都有解释为什么?当然,一个简单的c*10**-1方法就可以了,但是如果你重复调用函数以在多个维度上使用它,错误会变得更大:

这里是文档的链接。

0 投票
2 回答
649 浏览

c++ - 基于 DCT 的视频编码过程

我遇到了一些问题,希望您能够澄清。我自学了一个类似于 Mpeg2 的视频编码过程。过程如下:

  1. 将 RGBA 图像拆分为 4 个单独的通道数据存储块。所以一个包含所有 R 值的数组,一个单独的 G 值数组等。

  2. 获取数组并获取一个 8x8 像素数据块,使用离散余弦变换 (DCT) 对其进行变换。

  3. 使用预先计算的量化矩阵量化这个 8x8 块。

  4. 之字形编码量化步骤的输出。所以我应该得到一个连续数字的踪迹。

  5. 运行长度编码 (RLE) 之字形算法的输出。

  6. Huffman 编码 RLE 阶段后的数据。使用预先计算的霍夫曼表中的值替换。

  7. 返回第 2 步并重复,直到所有通道数据都已编码

  8. 返回第 2 步并为每个通道重复

第一个问题是我是否需要将 RGBA 值转换为 YUV+A (YCbCr+A) 值才能使进程正常工作,还是可以继续使用 RGBA?我问,因为 RGBA->YUVA 转换是一个繁重的工作量,我想尽可能避免。

下一个问题。我想知道 RLE 存储应该只运行 0 还是可以扩展到数组中的所有值?请参阅以下示例:

最后一个问题是关于霍夫曼阶段的单个符号是什么?例如,要替换的符号是 2 或 4 之类的值,还是符号是运行级别对 [2,4]。

感谢您花时间阅读并帮助我。我阅读了许多论文并观看了许多 youtube 视频,这有助于我理解各个算法,但不能帮助我理解它们如何链接在一起以形成代码中的编码过程。

0 投票
1 回答
117 浏览

encode - 我应该对单个帧、该帧的颜色通道还是 8x8 宏块进行 Huffman 编码?

进一步回答我几天前关于 基于 DCT 的视频编码过程的问题

我有 DCT、量化、之字形和 RLE 步骤,它们似乎正在输出合理的值,所以我现在需要知道我应该在整个帧、该帧的颜色通道还是在 8x8 宏块级别上运行 Huffman 编码?

0 投票
1 回答
771 浏览

image-processing - DCT 压缩中的掩蔽

我正在尝试使用 DCT 进行图像压缩(D iscrete C osine T转换)。有人可以帮我理解掩蔽如何影响 DCT 中的每像素位吗?掩码中的位分配是如何完成的?

PS:通过掩码,我的意思是将 DCT 系数与下面的矩阵相乘(元素乘法,而不是矩阵乘法)。

“蒙面”的背景

使用 DCT 的压缩计算图像块的 DCT,在本例中为 8x8 像素。图像的高频分量对于人类对图像的感知不太重要,因此可以丢弃以节省空间。

mask矩阵选择保留哪些 DCT 系数以及丢弃哪些以节省空间。左上角的系数代表低频。

有关更多信息,请访问离散余弦变换

0 投票
0 回答
2432 浏览

image-processing - 图像隐写术的 DCT 方法实现

我需要实现一个程序,使用 DCT 矩阵在图像中嵌入文本消息(PNG 或 BMP 无关紧要)来隐藏消息。我阅读了一些文章,但其中大多数都非常复杂。以下是基本步骤:

  1. 将图像分成 8x8 块(像素强度矩阵)。
  2. 对每个块进行离散余弦变换 (DCT)。所以我们得到 8x8 DCT 系数矩阵。
  3. 以某种方式将消息插入 DCT 系数矩阵中最不重要的元素中。
  4. 执行 IDCT 并获得内部带有秘密消息的正常图像表示。

我不明白我应该在第三步做什么?也许在 C# 或 Java 中存在这种技术的一些现有实现?

0 投票
1 回答
1172 浏览

java - Jpeg DCT 和 IDCT 计算不正确

我正在尝试计算输入图像的 DCT 和 IDCT,并将 IDCT 输出显示为结果图像。但我的 IDCT 值超过 300。我的输入图像是“.rgb”图像。我还将输入图像的高度和宽度视为常数,即 352*288

我将每个像素的输入红色、绿色和蓝色整数表示为 rgb[3][64][1583] 其中 [3] -> 红色/绿色/蓝色的索引和 [64] -> 每个块中的像素索引以及8*8块的[1583]->索引,即1583块中的块之一。

最后,我将我的量化表保持为具有统一值-> 2^N,其中 N 作为参数传递。在此代码中,quantLevel 是上面的 N。

以下是我的代码:

我没有尝试将输出图像显示为我检查的红色的 IDCT 输出高于 255。

请帮忙。

0 投票
1 回答
237 浏览

image-processing - 如何随机直流?

我想在 matlab 中使用 DCT 进行图像加扰。我使用了灰度图像。我想用随机值随机直流。如何将每个块的DC系数设置为随机值0-255并保留所有其他值?这些是实验的步骤:将灰度图像分成8x8块;对每个块执行DCT;将每个块的DC系数设置为随机值0-255和保留所有其他;执行逆 DCT 并恢复图像;通过 SSIM 将恢复的图像与原始图像进行比较。谢谢你