图像处理之图像的离散余弦变换

这篇具有很好参考价值的文章主要介绍了图像处理之图像的离散余弦变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

离散余弦变换(Discrete Cosine Transform, DCT)是以一组不同频率和幅值的余弦函数和来近似一幅图像,实际上是傅立叶变换的实数部分。离散余弦变换有一个重要的性质,即对于一幅图像,其大部分可视化信息都集中在少数的变换系数上。因此,离散余弦变换经常用于图像压缩,例如国际压缩标准的JPEG格式中就采用了离散余弦变换。

二、基本原理

在傅立叶变换过程中,若被展开的函数是实偶函数,则其傅立叶变换中只包含余弦项,基于傅立叶变换的这一特点, 人们提出了离散余弦变换。DCT变换先将图像函数变换成偶函数形式,再对其进行二维离散傅立叶变换,故DCT变换可以看成是一种简化的傅立叶变换
图像处理之图像的离散余弦变换
一维离散余弦变换可以非常容易地推广到二维离散余弦变换,二维离散余弦变换定义为:
图像处理之图像的离散余弦变换

三、matlab实现

(1)对图像进行二维离散余弦变换

在MATLAB软件中,采用函数dct()进行一维离散余弦变换,采用函数idct()进行一维离散余弦反变换。通过函数dct2()进行二维离散余弦变换,该函数的详细使用情况如下所示:
图像处理之图像的离散余弦变换

close all;
clear all;
clc;
I=imread('coins.png');
I=im2double(I);
% B=dct2(A)用于计算图像矩阵A的二维离散余弦变换,返回值为B,AB的大小相同
J=dct2(I);

subplot(121),imshow(I);
title('原始图像');
subplot(122),imshow(log(abs(J)),[]);
title('二维离散余弦变换系统的图像');% 系统中的能量主要集中在左上角,其余大部分系统将近于0

实现效果:
图像处理之图像的离散余弦变换

(2)通过函数dctmtx()生成离散余弦变换矩阵

在MATLAB中,采用函数dctmtx()生成离散余弦变换矩阵。函数dctmtx()的详细使用情况如下:
图像处理之图像的离散余弦变换

close all;
clear all;
clc;
A=[1 1 1 1;2 2 2 2;3 3 3 3];
s=size(A);
M=s(1);% 矩阵的行数
N=s(2);% 矩阵的列数
% B=dctmtx(n)建立n*n的离散余弦变换矩阵B,其中n是一个正整数
P=dctmtx(M);
Q=dctmtx(N);
B=P*A*Q';% 通过离散余弦变换矩阵定义B=P*A*Q计算矩阵A的离散余弦变换
disp(P);
disp(Q);
disp(B);

命令行窗口:

    0.5774    0.5774    0.5774
    0.7071    0.0000   -0.7071
    0.4082   -0.8165    0.4082

    0.5000    0.5000    0.5000    0.5000
    0.6533    0.2706   -0.2706   -0.6533
    0.5000   -0.5000   -0.5000    0.5000
    0.2706   -0.6533    0.6533   -0.2706

    6.9282         0   -0.0000   -0.0000
   -2.8284   -0.0000    0.0000    0.0000
    0.0000         0   -0.0000   -0.0000

(3)利用函数dctmtx()进行图像的离散余弦变换

close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
s=size(I);
M=s(1);
N=s(2);
% B=dctmtx(n)建立n*n的离散余弦变换矩阵B,其中n是一个正整数
P=dctmtx(M);
Q=dctmtx(N);
J=P*I*Q';% 通过离散余弦变换矩阵定义B=P*A*Q计算矩阵A的离散余弦变换
K=dct2(I);
E=J-K;% 两种方法计算出的离散余弦系数之差
find(abs(E)>0.000001)% 查找系数差的绝对值大于0.000001(命令行显示:空的 0×1 double 列向量--说明两种方法计算出的离散余弦系数基本相同)
 
subplot(121),imshow(J);
title('采用离散变换矩阵得到的系数图像');
subplot(122),imshow(K);
title('采用函数dct2()得到的系数图像');

实现效果:
图像处理之图像的离散余弦变换
(4)图像的二维离散余弦反变换

在MATLAB软件中,采用函数idct2()进行二维离散余弦反变换,该函数的调用情况如下:
图像处理之图像的离散余弦变换

close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
J=dct2(I);% 二维离散余弦变换
% B=idct2(A)计算矩阵A的二维离散反变换,返回值为B,AB的大小相同
K=idct2(J);% 二维离散余弦反变换

subplot(131),imshow(I);
title('原始图像');
subplot(132),imshow(J);
title('二维离散余弦变换的系数图像');
subplot(133),imshow(K);
title('二维离散余弦反变换的图像');

实现效果:
图像处理之图像的离散余弦变换文章来源地址https://www.toymoban.com/news/detail-446111.html

到了这里,关于图像处理之图像的离散余弦变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

    一维离散傅里叶变换(Discrete Fourier Transform,DFT) :是一种数学技术,用于将代表离散时间信号的N个复数序列从 时域转换到频域 。DFT被广泛用于许多应用,如音频和图像处理、通信和控制系统。DFT是傅里叶变换的离散版本,傅里叶变换是一种用于分析频域信号的连续数学技

    2023年04月13日
    浏览(78)
  • 【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及文献 基于

    2024年02月07日
    浏览(35)
  • 《数字图像处理-OpenCV/Python》连载(1)前言

    本书京东优惠购书链接:https://item.jd.com/14098452.html 写作背景 编写本书的初衷,源自作者学习数字图像处理的经历。 在创新实验班开设的专业创新教育课程中,我选择的是数字图像处理方向。老师向我推荐的教材是冈萨雷斯的《数字图像处理》。学习的开始阶段非常困难。教

    2024年02月11日
    浏览(33)
  • 数字信号与图像处理实验三:图像处理基础与图像变换

    ​ 通过本实验加深对数字图像的理解,熟悉MATLAB中的有关函数;应用DCT对图像进行变换;熟悉图像常见的统计指标,实现图像几何变换的基本方法。 ​ 选择两幅图像,读入图像并显示,同时使用Matlab计算图像的大小,灰度平均值、协方差矩阵、灰度标准差和相关系数。 DC

    2024年02月04日
    浏览(46)
  • 数字图像处理实验四--图像变换

    (图像变换) 实验内容: 对图像lena、cameraman和face进行傅里叶变换,观察图像能量在频谱图中的分布情况。 利用Matlab生成下列图像,并对其进行旋转30度、90度和120度,然后对他们分别进行傅里叶变换。 对图像lena、cameraman和face用DCT变换进行图像压缩,舍掉的变换系数分别小

    2024年04月14日
    浏览(52)
  • OpenCV(图像处理)-基于Python-图像的基本变换-平移-翻转-仿射变换-透视变换

    为了方便开发人员的操作,OpenCV还提供了一些图像变换的API,本篇文章讲简单介绍各种API的使用,并附上一些样例。 图像缩放函数,用于把图像按指定的尺寸放大或缩小。 dst = cv2.resize(src, dsize, fx, fy, interpolation) dst = 生成的目的图像 src:需要变换的原图像 disize:(x, y)需要

    2024年02月08日
    浏览(42)
  • python图像处理实战(二)—图像几何变换

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 前言       图像几何变换就是在不改变图像像素值的前提

    2024年02月09日
    浏览(45)
  • 数字图像处理 关于matlab的图像变换

    熟悉及掌握图像的傅里叶变换、离散余弦变化原理及性质,实现图像的频率域变换。 1. 读入一幅图像,分别为图像添加叠加密度为0.04的椒盐噪声,均值为0方差为0.02的高斯噪声,做FFT变换。将原始图像、原始图像频谱图、添加噪声后的图像,以及噪声图像的频谱图同时显示出

    2024年02月05日
    浏览(38)
  • python图像处理实战(三)—图像几何变换

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 前言       图像几何变换就是在不改变图像像素值的前提

    2024年02月11日
    浏览(46)
  • 【图像处理】——距离变换算法

    通过本文可以了解到 什么是图像的距离? 什么是距离变换 距离变换的计算 OpenCV中距离变换的实现 距离(distance)是描述图像两点像素之间的远近关系的度量,常见的度量距离有 欧式距离(Euchildean distance)、城市街区距离(City block distance)、棋盘距离(Chessboard distance) 。

    2024年02月06日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包