首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏又见苍岚

    DCT 离散余弦变换

    DCT变换本身是无损的且具有对称性。对原始图像进行离散余弦变换,变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零。 将变换后的DCT系数进行门限操作,将小于一定值得系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,可以得到压缩后的图像。 定义 一维 DCT 变换 image.png 其中,f(i)为原始的信号,F(u)是DCT变换后的系数,N为原始信号的点数,c(u)可以认为是一个补偿系数,可以使DCT变换矩阵为正交矩阵。 二维 DCT 变换 image.png 其中,f(i,j)为原始的信号,F(u,v)是DCT变换后的系数,N为原始信号的点数,c(u),c(v)可以认为补偿系数,可以使DCT变换矩阵为正交矩阵。 在数字图像领域 JPEG 图像压缩使用了 DCT变换。 DCT同时也在音频信号处理,数字水印方面也发挥着各种作用。

    2.6K20编辑于 2022-08-09
  • 来自专栏苦旅

    Python 3D-DCT

    from scipy.fftpack import dct,idct import numpy as np def dct3(gop): ''' gop shape is bath*h *w ''' assert type(gop) == np.ndarray,"输入必须为numpy对象" gop_dct = [] # 先对图像做二维的dct变换 for frame in gop: frame_dct2 = dct(dct(frame.astype(np.double), norm='ortho').T,norm='ortho ').T gop_dct.append(frame_dct2) gop_dct = np.array(gop_dct) result = np.zeros_like(gop_dct result[:,i,j] = dct(gop_dct[:,i,j],norm='ortho') return result def idct3(gop_dct): '''

    89630发布于 2021-05-11
  • 来自专栏给永远比拿愉快

    二维DCT变换

    二维DCT变换 二维DCT变换是在一维的基础上再进行一次DCT变换,公式如下: F(u,v)=c(u)c(v)\sum_{i=0}^{N-1}\sum_{i=0}^{N-1}f(i,j)\cos{[\frac 变换 YY = dct2(X); % 使用MATALAB函数进行DCT变换 disp('使用公式进行DCT变换:') disp(Y) disp('使用MATLAB函数DCT变换:') disp(YY 变换 XX = A'* Y* A; % DCT逆变换 disp('原始矩阵:') disp(X) disp('使用公式进行DCT逆变换:') disp(XX) disp('使用MATLAB函数DCT DCT变换的可分离性 DCT变换是可分离的变换。 DCT用于图像压缩 对于二维灰度图像进行DCT变换,就能得到图像的频谱图:低阶(变化幅度小)的部分反映在DCT的左上方,高阶(变化幅度大)的部分反映在DCT的右下方。

    4.5K30发布于 2019-01-22
  • 来自专栏Pulsar-V

    原-图像处理基础(四)DCT变换

    Imread()用于读取图片文件中的数据 figure() 控制画图的窗口 imshow() 显示图像 rgb2gray() 把真彩图像转变为灰度图像 dct2() DCT变换 Colormap Colorbar:colormap实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值 idct2() DCT逆变换 Subplot() 将当前窗口分割成多个子窗口,第一个参数表示分割窗口的行数

    1.1K60发布于 2018-04-28
  • 来自专栏hotarugaliの技术分享

    2006-IEEE-Recovering DC coefficients in block-based DCT

    JPEG 中的 DCT 和 IDCT 公式 JPEG 中采用的是 DCT-II 公式。 其中 image.png 2.1 DCT 公式 image.png 2.2 IDCT 公式 image.png 3.

    53220编辑于 2022-03-18
  • 来自专栏hotarugaliの技术分享

    2006-IEEE-Recovering DC coefficients in block-based DCT

    JPEG 中的 DCT 和 IDCT 公式 JPEG 中采用的是 DCT-II 公式。 \end{array} 2.1 DCT 公式 \begin{array}{c} F(u,v) = C(u) C(v) \sum_{i=0}^7 \sum_{j=0}^7 f(i,j) \cdot \cos

    59910编辑于 2022-03-17
  • 来自专栏音视频咖

    DCT如此重要,作者当初竟然不知道?

    如果你使用DCT对图像进行转换,AC系数包含了图像的更多细节。同时,如果把这些DCT系数应用于反向的2D-DCT,将得到原始系数。 DCT本身并不会压缩数据,它为随后的量化之类的操作,提供了一个良好的基础。 DCT是谁发明的? 第一个提出DCT的人是Nasir Ahmed。 DCT的实现简介 DCT有8种形态,我们通常所说的DCT,其实指的是DCT-II,其对应的反变换是DCT-III。 DCT-II、DCT-III的原始定义非常简单: 其中: X:X 是DCT输出 x:x 是DCT输入 k:k 是计算结果的输出数据索引, 从 0 to N−1 N:N  变换元素的数目 s:s是缩放函数 以H.264标准为例,它实际上是把DCT 变换和后续的量化放在了一起,以减轻DCT变换计算的复杂度,所以有时候看H.264的DCT变换系数,你甚至第一眼很难想象它其实是个DCT的变换;从H.264的时代开始

    2.2K50发布于 2021-08-17
  • 来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

    优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。

    言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址是:http://www.ipol.im/pub/art/2011/ys-dct/,IPOL网站的最大特点就是他的文章全部提供源代码 这篇文章的原理也是非常简单的,整个过程就是进行dct变换,然后在dct域进行硬阈值操作,再反变换回来。 继续可以优化的地方就是8*8点的浮点DCT变换了。 当进行2维的DCT的时候,其步骤为对每行先进行行方向的一维DCT,然后对结果转置,在对转置后的数据进行行方向一维DCT,得到的结果再次转置则为2维DCT。 还有一个可以优化的地方就是,在高度方向上前后两个像素8*8领域 在进行2D的DCT变换时,其第一次行方向上的DCT变换有7行的结果是可以重复利用的,如果利用这一点,则可以获得约15%的速度提示。    

    1.8K80发布于 2018-01-03
  • 来自专栏软件工程师Michael

    感知哈希算法计算图像相似度

    这样做的目的是简化了DCT的计算,而不是减小频率。(2)简化色彩:将图片转化成灰度图像,进一步简化计算量。(3)计算DCT:计算图片的DCT变换,得到32x32的DCT系数矩阵。 (4)缩小DCT:虽然DCT的结果是32x32大小的矩阵,但我们只要保留左上角的8x8的矩阵,这部分呈现了图片中的最低频率。(5)计算平均值:如同均值哈希一样,计算DCT的均值。 (6)计算hash值:这是最主要的一步,根据8x8的DCT矩阵,设置0或1的64位的hash值,大于等于DCT均值的设为”1”,小于DCT均值的设为“0”。 变换 dct = cv2.dct(np.float32(gray)) # opencv实现的掩码操作 dct_roi = dct[0:10, 0:10] hash = [] avreage = np.mean(dct_roi) for i in range(dct_roi.shape[0]): for j in range(dct_roi.shape[1

    1.9K60编辑于 2022-11-03
  • 来自专栏GiantPandaCV

    CVPR 2020 在频域中学习的DCTNet

    阿里达摩院联合亚利桑那州大学提出了基于「DCT变换」的模型,旨在「通过DCT变换保留更多原始图片信息」,并「减少CPU与GPU的通信带宽」,最后的实验也证明该模型的有效性 原始论文地址:https:// 首先「将RGB格式转化为YCbCr格式」 然后做「DCT变换」转换到频域 然后「我们将相同频率的二维DCT变换系数分组到一个通道」,形成一个立方体(Cube)。 上述DCT处理步骤替换到ResNet中的做法 DCT(补充) 具体可以参考 详解离散余弦变换(DCT)(https://zhuanlan.zhihu.com/p/85299446) DCT即「离散余弦变换 转换后的图片长什么样子 分块DCT实验 这里输入图片大小为224x224x3,以8x8分块进行DCT变换,然后将8x8的系数展开成64大小的张量。 8, :] = dct[i:(i + 8), j:(j + 8)].flatten() dct_list.append(dct) dct_mat.append(dct_matrix)

    5K20发布于 2020-09-27
  • 来自专栏机器学习养成记

    图片相似度识别:pHash算法

    计算DCT,并选取左上角8*8的矩阵。 计算DCT均值。 哈希值计算。将每个DCT值,与平均值进行比较。大于或等于平均值,记为1,小于平均值,记为0,由此生成二进制数组。 (与aHash类似) 图片配对,计算汉明距离 2 DCT 一维DCT变换公式: ? f(i)为原始的信号,F(u)是DCT变换后的系数,N为原始信号的点数,c(u)是补偿系数。 二维DCT变换公式: ? 二维变换是在一维变换的基础上得来的,并且上述公式可以转化为 ? 此形式更方便计算。DCT变换是对称的,因此可以对经过DCT变换的图片进行还原操作。 = cv2.dct(np.float32(gray)) dct_roi = dct[0:8, 0:8] avreage = np.mean(dct_roi)

    8.2K10发布于 2019-10-31
  • 来自专栏AI SPPECH

    102_隐写术进阶:图像频域隐写技术深度解析——从DCT变换到小波隐写的完整实现指南

    第二章 基于DCT的频域隐写实现 2.1 图像DCT变换基础实现 首先,让我们实现图像的DCT变换和逆变换。我们将使用NumPy和SciPy提供的信号处理功能。 (dct_blocks, num_blocks=8): """ 可视化DCT系数 参数: dct_blocks: DCT系数块 num_blocks: # 进行DCT变换 dct_blocks, original_shape = image_to_dct_blocks(img) # 可视化DCT系数 (dct_blocks, quantization_table, block_size=8): """ 对DCT系数进行量化 参数: dct_blocks: DCT 变换 dct_blocks1, _ = image_to_dct_blocks(img1) dct_blocks2, _ = image_to_dct_blocks(img2)

    56811编辑于 2025-11-16
  • 来自专栏雪月清的随笔

    JPEG图像是如何进行压缩编码的

    ,无损的预测压缩技术; 熵编码方法包括:Huffman编码,算术编码; 编码模式包括: 基于DCT的顺序模式:编码,解码通过从左到右,从上到下一次扫描完成; 基于DCT的渐进式模式:编码,解码需要多次扫描完成 ,扫描效果从模糊逐渐清晰 基于DPCM的无损模式:解码后能完全恢复到原图像的采样值 层次模式:图像在多个空间分辨率中进行编码,可以根据实际需要选择不同分辨率进行解码 基于DCT的顺序编码模式和基于DCT 在手机拍照输出.jpg照片的过程中,Camera ISP有个CSC模块就是做这个事的; 分块:JPEG标准中处理图片时会把图片按8x8像素进行分块,主要是为了后续的DCT操作,因为DCT中的n值一般都是 DCT变换公示为: ? f(i,j) 经 DCT 变换之后,F(0,0) 是直流系数,其他为交流系数 举个例子说明一下(例子数据来源于参考资料2): 8x8的原始图像: ? 因为DCT的数据范围为-128~127,所以减去128: ? DCT处理: ? 可以看到频率域中,图像的低频部分会集中在矩阵的左上角,高频部分集中在矩阵的右下角。

    2.9K11发布于 2020-07-01
  • 来自专栏媒矿工厂

    [基础知识] JPEG 中的信号处理

    目录 介绍 技术一:色度的二次采样、下采样 技术二:DCT 变换 玩转 DCTDCT 二维 DCT 从 2D DCT 构建图像 技术三:量化 技术四:游程、哈夫曼编码 介绍 计算机通常的颜色空间是 技术二:DCT 变换 玩转 DCT 另一个进行压缩的关键是对定义灰度图像的 Y 通道进行处理。 DCT变换适用于任何大小,我们还是以 8 个像素为例进行介绍。 DCT 的想法是把不同像素的值映射到不同频率的余弦波上去。DCT 以原始信号的采样点作为输入,输出相应的 DCT 系数。 二维 DCT JPEG 获取图像并将其划分为 8×8 块,然后减去 128,使其值集中在 0 附近;然后对每一行进行 DCT 变换得到 8 组 DCT 系数;再对 每一列进行 DCT 变换;这样就得到了 二维 DCT 经过 DCT 变换后,会发现图像信号大部分集中在低频处,称之为能量压缩。

    2.1K11编辑于 2022-05-25
  • 来自专栏python3

    W3C高级算法挑战之python实现

    = {v: k for k, v in dct.items()} # 面额作为键,数量作为值,去掉0和大于需找零金额的键,得到dct_aftdel dct_aftdel = {dct[ dct[i] = dct.get(i) + j else: dct[i] = j lst = sorted([i for i in dct.items() [f"{dct1[date1[1]]} {dct2[date1[2]]}, {date1[0]}", f" {dct1[date2[1]]} {dct2[date2[2]]}"] # 不同月 [date1[1]]} {dct2[date1[2]]}, {date1[0]}", f" {dct1[date2[1]]} {dct2[date2[2]]}"] - d not in dct: dct.pop(d) else: dct[d] = dct[d][:min(len(dct[d]), len

    91340发布于 2020-01-17
  • 《数字图像处理》实验5-图像压缩及编码

    (二)DCT 变换与图像重构 实验任务         彩色图→灰度图→DCT 变换→逆 DCT 重构→归一化→对比变换前后图像及矩阵变化。 变换 dct_img = dct2(gray_double); % 逆DCT变换重构图像 recon_img = idct2(dct_img); % 归一化重构结果(映射到0-255范围) min_val 验证了 DCT 变换的可逆性; 核心:DCT 变换将空间域冗余转换为频域冗余,为后续量化压缩奠定基础。 (三)基于 DCT 的量化与掩模压缩 实验任务         灰度图→补零为 8 的整数倍→8x8 分块 DCT 变换→量化 / 掩模过滤→逆 DCT 重构→对比压缩效果。 = blockproc(I_pad, [8 8], @(x) T*x.data*T'); % 全图DCT dct_masked = blockproc(dct_all, [8 8], @(x) mask

    11910编辑于 2026-01-21
  • 来自专栏非典型性程序员

    挑战30天学完Python:Day7数据类型-字典dict

    # syntax dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'} print(len(dct)) # 形式为字典变量[key] # 语法 dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'} print(dct # 语法 dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'} dct['key5'] = 'value5 # 语法 dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'} print('key2' in dct) # 语法 dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'} dct_copy = dct.copy()

    37820编辑于 2023-10-21
  • 来自专栏大数据风控与机器学习

    为风控业务定制损失函数与评价函数(XGB/LGB)

    '].quantile(0.2) #按照阈值处理成二分类任务 dct['percent']= dct['percent'].map(lambda x :1 if x <= key else 0) #计算评价函数,权重默认0.5,可以根据情况调整 result = np.mean(dct[dct.percent== 1]['labels'] == 1) *0.5 + np.mean((dct.labels - dct.pred)**2)*0.5 return 'error',result watchlist '].quantile(0.2) #按照阈值处理成二分类任务 dct['percent']= dct['percent'].map(lambda x :1 if x <= key else 0) #计算评价函数,权重默认0.5,可以根据情况调整 result = np.mean(dct[dct.percent== 1]['labels'] == 1)*0.9 + np.mean

    2.6K52发布于 2019-12-23
  • 来自专栏图像处理与模式识别研究所

    余弦变换编码

    =cv2.dct(img1)#离散余弦变换 img_dct_log=np.log(abs(img_dct))#log处理 for i in range(0,rows): for j in range(0,cols): if i>100 or j>100: img_dct[i,j]=0 img_dct_log[i,j]=0 img_recor=cv2.idct(img_dct)#离散余弦反变换 plt.rcParams['font.sans-serif']=['SimHei 在空间域上,图像内容千差万别;但在频率域上,经过对大量图像的统计分析发现,图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。 通过利用DCT变换揭示出这种规律后,再采取一些措施把频谱中能量较小的部分舍弃,保留传输频谱中主频率分量达到图像数据压缩目的。

    73720编辑于 2022-05-29
  • 来自专栏腾讯多媒体实验室

    从HEVC到VVC:变换技术的演进(1)—— 主变换(Primary transform)

    下图为HEVC所采纳的32点DCT2变换核,从32点DCT2变换核的设计可以看出,4点,8点和16点DCT2的变换核可由32点DCT2变换核导出,这是DCT2所具备的一个低复杂度的特性。 下图所示为EMT变换集0所支持的四种候选变换组合的基图像(basis image),从左至右分别为(水平DST7,垂直DST7;水平DST7,垂直DCT8;水平DCT8,垂直DST7;水平DCT8,垂直 DCT8)。 DST 7, DCT8变换核。 由于DST7/DCT8不具备DCT2的对称性,针对DST7/DCT8的快速算法研究也比较有限,采用基于矩阵乘法的32点的DST7和DCT8将带来远高于DCT2的计算复杂度。

    3.3K73发布于 2019-05-16
领券