问题标签 [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 投票
1 回答
1155 浏览

c - 黑鳍。带有 BF537 EZ-KIT 的 2D DCT/IDCT(图像压缩),如何从 BF537 内存写入文件(在磁盘上)重建图像(原始像素数据)?

我用 AnalogDevices实现的BF537 EZ-KIT用数字图像处理 - 2D DCT/IDCT(图像压缩)尝试了这个实验。

提到“简历”:

  • 我建立项目;

  • 使用 Image Viewer 将黑白图像 (*.bmp) 从磁盘加载到 Blackfin 内存 0x8000;

  • 运行项目;

  • 按下 BlackFin 板 (BF537) 上的按钮(从 SW 10 到 13)并选择压缩级别;

  • 在计算出量化表和 DCT->量化->反量化->逆 DCT.. 在 BF 内存 (0x80000) 中的某个地址点处生成重建图像;

  • 使用Image Viewer(来自 VisualDsp),我从 BF 内存加载重建的灰度图像,一切正常,差异可见;

提到当我使用 Image Viewer 从磁盘或使用 Image Viewer 从 BF 内存将图像加载到 BF 内存时,源格式为Raw Pixel Data

但是除了这个项目之外我想做的所有事情都是:

  • 将(创建/写入)[用C语言] 将Blackfin内存中的图像重建到磁盘中(编写代码或类似的东西;不具有图像查看器功能 - 将图像另存为...)。

我试图将位于内存中0x80000的重建缓冲区写入 *.bmp 文件,但似乎当我打开它时,我收到如下错误:“无法读取文件头;未知文件格式,或找不到文件.. .";

请问有人知道如何用C语言从位于 Blackfin 内存中的原始像素数据创建/写入/保存*.bmp 图像吗?

提前致谢; 任何解决方案,建议将不胜感激!

下面是整个 Visual Dsp 项目存档的链接。(我正在使用 VisualDsp++ 5.0) https://docs.google.com/open?id=0B4IUN70RC09nMjRjNzlhNTctMTI3OS00ZmI4LWI4NzAtNWRkM2MyMDgyMjZm

*请原谅我的英文写作错误

0 投票
1 回答
349 浏览

c - 基于英特尔的 DCT 硬件加速?

我们正在编写针对某些英特尔硬件的图像处理算法。一般来说,我们更喜欢通用的 C 实现,但我们已经确定了一种算法,该算法的核心是大量的离散余弦变换 (DCT),效果非常好。不幸的是,我们的吞吐量要求使得通用 C 实现慢了大约 2 个数量级。我可以通过其他一些技巧获得一个数量级,所以如果我可以将我的 DCT 提高大约一个数量级,我就有了通往成功的道路。

英特尔 MMX 是一种获得硬件加速来执行这些 DCT 的方法吗?我可以利用其他英特尔特定库和/或硬件来加快这些坏男孩的速度吗?

我从哪里开始看?这对我来说是一项新工作,也是我第一次深入研究英特尔硬件,所以任何指针都将不胜感激。

0 投票
2 回答
4155 浏览

algorithm - 快速 DCT 变换

在 JPEG 压缩过程中生成 DCT 系数的标准方程是 DCT 公式,由下式给出:

我觉得这个实现很昂贵(慢),而且有更快的方法。这种更快地生成 DCT 系数的方法是否有明确的公式?

0 投票
1 回答
1194 浏览

c++ - 如何使用 *.cpp 文件中 asm 实现的函数,在 VisualDsp++ 5 中,用于 Blackfin BF537?

我在“Wiley-Embedded Signal Processing with the Micro Signal Architecture.2007”中解释了这个项目 -实现了2D DCT/IDCT(图像压缩),我想将(将这些文件移动到..)与另一个带有图像的个人项目结合起来在Visual Dsp for Blackfin BF 537中处理(只有 *.cpp 文件)。(首先在Simulator中,然后在板上 BF537 ..)

实施的项目 2D DCT/IDCT 有 *. c和*。asm文件,它工作得很好。在某些时候,对于某些计算,来自 C 文件的函数正在使用 asm 文件中声明(和实现)的函数。

我注意到如果我在我的项目中移动这些 *.c 文件(其中仅包含 *.cpp 文件),我会得到很多错误,其中一些像这样:

所以,我认为我需要在我的项目中只有 *.cpp 文件(而不是 *.cpp 和 *.c 的组合)。

2D DCT/IDCT项目中,当我更改所有这些 *. c文件到 *. cpp文件。当我尝试构建时,出现此链接错误:

在 *。cpp文件这是我如何调用在 asm 中实现的函数:

在相同的 *。cpp文件我包含一个头文件,我在其中声明了函数:

这是*的一部分。asm文件,其中包含函数:

模拟带功能$_r8x8invdct_ieee()

*请原谅我的英文写作错误

0 投票
2 回答
2422 浏览

matlab - 如何使用 Sallee 的代码从 MATLAB 中找到量化系数?

首先,我承认这是一道作业题。但是,我似乎被困住了。我需要使用Phil Sallee 的 JPEG 工具箱(在表格底部的“更新”标题下列出的链接)从 jpeg 图像中获取所有量化系数(我将构建一个直方图,但我可以处理这部分一旦我可以获取我需要的数据)。我有一个大小约为 5 MB 的 JPEG 图像,当我通过 Sallee 的代码运行它时会取回这些数据:

如何从此图像中获取量化系数?起初我尝试了这样的方法来吐出系数,这样我就可以看到我在处理什么:

img_coefquant_tables运行两次,因为上面的数据点有两个元素。然而,对于如此大的图像,这似乎是一个非常低的系数。在这方面比我知识渊博的人可以为我指明正确的方向吗?我在哪里/如何从 jpeg 图像中提取量化系数?

0 投票
0 回答
1021 浏览

image - Jpeg 图像压缩:量化问题

在将原始图像编码为 jpeg 图像时,8x8 数据单元被电平移动,使用 2-D DCT 进行转换,量化和霍夫曼编码。

我首先执行了行 DCT,然后执行了列 DCT,并将结果四舍五入到最接近的整数。我将此块发送到量化模块。在量化时,我使用了以下 Q 表。这些表是 IJG 推荐的品质因数 99。

亮度表

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1
1 1 1 2 2 1
1 1 1 1 1 2 2 2
1 1 1 1 2 2 2 2
1 1 2 2 2 2 2 2
1 2 2 2 2 2 2 2

色度表

1 1 1 1 2 2 2 2
1 1 1 1 2 2 2 2
1 1 1 2 2 2 2 2
1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2
2 2 2 2
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2

在量化期间,除以“2”时,我将结果从零四舍五入。示例:11/2 = 6。因此,在解码时的去量化过程中,每个奇数都会增加 +1 的误差。

在另一个设置中,我改变了我的舍入技术。在这里,我将结果四舍五入为零。示例:11/2 = 5。因此,在解码时的去量化过程中,每个奇数都会添加一个 -1 的误差。

在第二种情况下,我得到的文件大小非常小(对于 768x512 图像,文件大小减少了近 100 kb)和更多的 PSNR。我可以通过说所有被 2 量化时为“1”的 AC 系数现在将变为 0 而不是 1 来解释较小的文件大小。因此 RLE 使文件大小更小。但我无法解释为什么编码图像质量会提高。它增加了 2-3 分贝,并且发生在我测试的所有图像中。

我的论点是因为 DCT 基本上是 A * DCTmatrix 两边的相等误差应该产生相等的损失。但这里不是这种情况。

0 投票
1 回答
911 浏览

video - 离散余弦变换系数去除

我需要知道高频 DCT 系数如何位于 8by8 DCT 系数图的右下角大小的证明。我需要关于频率分量如何从 DCT 地图的右下角以锯齿形图案减少的理论。谁能给我一个参考?

谢谢拉娜。

0 投票
3 回答
1949 浏览

image-processing - 霍夫曼编码如何从 dct 系数构造图像(jpeg)?

我有一个 512x512 的图像,我试图重新压缩它。这是将图像重新压缩为 jpeg 文件的步骤

但是在霍夫曼编码之前,我计算了 DCT 系数的数量,它是 393216。除以 64 告诉我 DCT 块(8x8)的数量将是 6144。

现在我尝试计算像素域的 8x8 块的数量。512/8=64 这给了我 64 个水平块和 64 个垂直块。64 x 64 = 4096 不等于 DCT 块数,而像素数为 512x512 = 262144

我的问题是霍夫曼编码如何神奇地将 393216 系数转换为 262144 像素并获取每个像素值,并计算压缩图像(jpeg)的尺寸(512x512)。

提前谢谢你。:D

0 投票
2 回答
249 浏览

php - 是否有用于 PHP 的图像处理库,可以像 MATLAB 那样逐个像素地处理图像?

我正在做一个可能需要我计算图像的 DCT 的项目。因此问题。

0 投票
1 回答
1819 浏览

matlab - H.264 的 DCT 实施

我正在为 H.264 的视频实施 DCT。我已经阅读了几本书,并遵循了他们指定的系数。尽管如此,当我做 IDCT 时,我似乎并没有得到正确的图像。请帮助我提供任何类型的信息。谢谢!我的代码是: