【发布时间】:2017-08-31 16:53:12
【问题描述】:
The formula in the image is depicting quantization
我想知道是否有人可以帮助我理解上述公式中发生了什么?我应该先执行 x = [c/s1] 然后执行 s1 * x 吗?
请帮助我理解这一点。
【问题讨论】:
标签: python numpy image-processing jpeg quantization
The formula in the image is depicting quantization
我想知道是否有人可以帮助我理解上述公式中发生了什么?我应该先执行 x = [c/s1] 然后执行 s1 * x 吗?
请帮助我理解这一点。
【问题讨论】:
标签: python numpy image-processing jpeg quantization
简而言之,JPEG 的工作原理是将discrete cosine transform 应用于图像的 8x8 像素块,然后将quantizing 应用于生成的 8x8 矩阵,以便将其压缩为更少的位。
量化是 JPEG 有损的原因。不同的量化矩阵会导致不同程度的压缩(和解压缩的图像质量)。
您问题中的公式表示 JPEG 压缩,然后是解压缩。 DCT 产生一个 8x8 浮点系数矩阵。那么:
这篇论文的观点是,当这个过程不止一次完成时(可能使用不同的量化系数),这是可以检测到的,并且可以用来查找经过修改的 JPEG 图像。
附:在我看来,作者的符号有点草率。如果我没记错的话,JPEG 会四舍五入到最接近的整数,而论文使用 floor 函数,该函数会向负无穷大舍入。除此之外,本文的主要观点仍然存在。
【讨论】:
⌊⌋是地板操作。删除数字的任何小数部分,将其减少为最大的小于或等于整数。在 Python 中,这是通过 math.floor() 或任何等价物完成的。
【讨论】:
好的,所以公式可以表示为
Quantized Value(i, j) = DCT(i, j)/Quantum(i, j)[Rounded-off to the nearest integer]
其中DCT = 离散余弦变换系数和
For every element position in the DCT matrix, a corresponding value in the
quantization matrix gives a **Quantum value** indicating what the step size is
going to be for that element.
and i, j are the row and column of the quantization matrix respectively.
在here 中提到了Lossy Data Compression 技术的python 方式(例如JPEG)。您还可以在here 中阅读有关公式见解的更多信息(请参阅本文)。
希望对你有帮助...
【讨论】:
您的来源令人困惑。量化只是整数除法的一个高大上的术语。
您有一个 8x8 量化表 (Q)。当您将 8x8 DCT 矩阵 (M) 量化为值 (V) 时,您会这样做
V (n, m) = M (n, m) / Q (n, m)
JPEG 确实会进行整数除法,其中值向下舍入。
请注意,在压缩过程中,如我们的示例所示,之后没有乘法。该论文显然提出了一种确定图像是否已被多次压缩的过程。
如果 V(n, m) * Q (n, m) != M (n, m) 很可能图像之前没有被压缩过。
【讨论】: