第四章 图像变换 附实验

前言

图像变换:为达到某种目的将原始图像变换映射到另一个空间上,使得图像的某些特征得以突出,以便于后面的处理和识别。

4.1连续傅里叶变换

一维变换

用傅里叶变换表示的函数特征完全可以通过傅里叶反变换来重建,而不会丢失任何信息。若把一个一维输入信号做一维傅里叶变换,该信号就被变换到频域上,即得到了构成该输入信号的频谱,频谱反映了该输入信号由哪些频率构成。

函数f(x)的一维连续傅里叶变换是,及其傅里叶变换F(x)的反变换是:

  1. 其中f(x)与F(x)是一个傅里叶变换对,并且对于任意一个f(x)它的F(x)是唯一的,反之亦然
  2. f(x)是实函数,而F(x)是复函数,因为有 j2=-1。
  3. x称为时域变量,u称为频域变量。

F(u)的实部、虚部、振幅、能量和相位分别表示如下:

注意之后就会用R(u)代替实部,I(u)带图虚部。

欧拉公式

上述过程中R(u)与I(u)的得到用到欧拉公式

空间频率

空间频率是指在一定方向上的单位空间(距离)波动的周期数。它不仅具有大小而且具有方向,是一个矢量。一幅图像有明暗和色彩的差别,是一种光的强度和颜色按空间的分布。这种空间分布的特征可以用空间频率来表示。

引进空间频率这一概念的目的:

  1. 研究输入图像由哪些空间频率成分构成。
  2. 在空间频率域中进行各种处理。

相对于空间频率域,有时也把图像本身叫做空间域

空间频率可以表示单位长度上的正弦波形变化的重复次数。用空间频率为u, v的二维平面(空间频率域)来表示(分别对应于x轴方向和y轴方向)。

推广到二维

设函数f(x,y)是连续可积,且F(u,v)可积,则存在如下傅里叶变换对:

存在限制

傅里叶变换的f(x)为连续(模拟)信号,而计算机处理的是数字信号(图像数据)

数学上采用无穷大概念,而计算机只能进行有限次计算。

4.2离散傅里叶变换DFT

一维离散傅里叶变换

离散傅里叶变换是傅里叶变换在时间域和空间域上都呈离散形式,实际上是对变换两端(在时间域和空间域)的原本无限长的序列进行采样,是其主值序列。

一维离散傅里叶变换对:

其中x,u=0,1,2,…, N-1

推广到二维

2-D DFT 与 2-D IDFT。

其中u, x=0, 1, 2, …, M-1;v, y=0, 1, 2, …, N-1;

4.3快速傅里叶变换FFT

变换过程

快速傅里叶变换是离散傅里叶变换的一种。

快速傅里叶变换在分析离散傅里叶变换中的多余运算的基础上,进而在消除这些重复工作的思想指导下得到的,所以在运算中大大节省了工作量, 达到了快速的目的。

对于一个有限长序列,它的(离散)傅里叶变换由下式表示:


其傅里叶变换转换为

实际的快速傅里叶变换过程比较麻烦,这里就不细写了。

对于原本的傅里叶变换可以看出要得到每一个频率分量,需进行N次乘法和 (N-1)次加法运算。要完成整个变换需要N2次乘法和N(N-1)次加法运算,计算复杂度很高。

库利和图基于1965年发表了一篇论文,提出了快速傅里叶变换算法。该算法把原始的N点序列依次分解成一系列短序列,求出这些短序列的离散傅里叶变换,以此来减少乘法运算量。

傅里叶变换的计算量为N2次复数乘法运算,快速傅里叶变换的计算量为N/2 * log2N次复数乘法运算。

快速傅里叶变换对一维离散傅里叶变换的直接实现的计算优势

C(N)=N2 / (N/2 * log2N) = N / log2N

通常假设N=2n,所以可以用n来表示:C(N)=2n / n。

4.4傅里叶变换的性质

可分离性

一个二维傅里叶变换可分解为两步进行,其中每一步都是一个一维傅里叶变换。

先对f(x, y)按行进行傅里叶变换得到F(x, v),再对F(x, v)按列进行傅里叶变换,便可得到f(x, y)的傅里叶变换结果。

平移性

f(x,y)与一个指数相乘 等于 将变换后的频率域中心移到新的位置,同理 F(x,y)与一个指数相乘 等于 将其反变换后的空间域中心移到新的位置。

f(x,y)的平移将不改变频谱的幅值。

移中性

当u0=M/2,v0=N/2时

如图,在平移前,坐标原点在窗口的左上角,窗口四角分布低频成分。经过移中之后,坐标原点移至频谱图窗口中央,因而围绕坐标原点的是低频,向外是高频。

由图可知,图像的能量主要集中在低频去,相对高频的位置的幅度值很小,可能接近于0,之后进行傅里叶变换之后都要进行移中

周期性与共轭对称性

旋转性质

当变量x,y,u,v都用极坐标表示时:

上述表明,对f(x,y)旋转一个角度θ0对应于F(u,v) 将其傅里叶变换也旋转相同的角度θ0

卷积

设:f(x),g(x)是R上的两个可积函数,作积分

可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f与g的卷积,记为h(x)=(f*g)(x)。

卷积定理表明两个二维连续函数在空间域中的卷积可用求其相应的两个傅里叶变换乘积的逆变换而得。反之,在频域中的卷积可用空间域中乘积的傅里叶变换而得。

目的:与其在一个域中作不直观的和难懂的卷积,不如在另外一个域中作乘法,可以达到相同的效果。

尺度变化

a * f(x,y) = a * F(u,v)

图片

如图,在乘以e-1之后,图像整体变暗。中央低频成分代表图像的平均亮度。

平均值

频谱直流成分的 1/(MN)0.5 倍等于图像平面的亮度平均值。

4.5图像傅里叶变换实例

例1


加噪图存在明显的颗粒噪声,变换后的高频成分增多。

例2


  1. 从幅值谱图像中得到的信息比在相位谱图像中得到的信息多,但对幅值谱图像重构后,即忽略相位信息,将其设为常数,所得到的图像与原始图像相比,结果差别很大。
  2. 对相位谱图像重构后,即忽略幅值信息,将其设置为常数,可以从中看出图像的基本轮廓。

4.6离散余弦变换DCT

离散余弦变换(Discrete Cosine Transform, DCT)是可分离的变换,其变换核为余弦函数。在对语音信号、图像信号的变换中,DCT变换被认为是一种准最佳变换。

定义

矩阵表示

离散余弦变换具有很强的“能量集中”特性,能量主要集中在左上角处。

4.7课程实验

实验内容

(1)对图像lena、cameraman和face进行傅里叶变换,观察图像能量在频谱图中的分布情况。
(2)利用Matlab生成下列图像,并对其进行旋转30度、90度和120度,然后对他们分别进行傅里叶变换。

(3)对图像lena、cameraman和face用DCT变换进行图像压缩,舍掉的变换系数分别小于0.01、0.03、0.05,求经压缩、解压后的图像。

实验1

I1 =imread('face.jpg');I1=im2double(I1);
I2 =imread('cameraman.tif');I2=im2double(I2);
I3 =imread('lena.jpg');I3=im2double(I3); %求傅里叶变换
I1f = fft2(I1);I2f = fft2(I2); I3f = fft2(I3);
I1f1 =abs(I1f);I2f1 = abs(I2f); I3f1 = abs(I3f);
I1f2 = fftshift(I1f1); I2f2 = fftshift (I2f1); I3f2 = fftshift(I3f1);
%显示图像
figure;
%原图
subplot(3,3,1);
imshow(I1);
xlabel('原图1 '); subplot(3,3,2);
imshow(I2);
xlabel('原图2 '); subplot(3,3,3);
imshow(I3);
xlabel('原图3 ');  %快速傅里叶变换的图
subplot(3,3,4);
imshow(I1f,[5,30]);
xlabel('频谱图1');  subplot(3,3,5);
imshow(I2f,[5,30]);
xlabel('频谱图2');subplot(3,3,6);
imshow(I3f,[5,30]);
xlabel('频谱图3');%傅里叶变换频谱中间零频率的图
subplot(3,3,7);
imshow(I1f2,[5,30]);
xlabel('中心移到零点的频谱图1');subplot(3,3,8);
imshow(I2f2,[5,30]);
xlabel('中心移到零点的频谱图2');subplot(3,3,9);
imshow(I3f2,[5,30]);
xlabel('中心移到零点的频谱图3');

实验2

%构造原始图像
I = zeros(256,256);
I(28:228,108:148) = 1;
%旋转图像
I1=imrotate(I,30,'bilinear');
I2=imrotate(I,90,'bilinear');
I3=imrotate(I,120,'bilinear');
%傅里叶变换
If=fft2(I);F=abs(If);If=fftshift(F);
I1f=fft2(I1);F=abs(I1f);I1f=fftshift(F);
I2f=fft2(I2);F=abs(I2f);I2f=fftshift(F);
I3f=fft2(I3);F=abs(I3f);I3f=fftshift(F);
%显示图像
subplot(2,4,1);imshow(I);xlabel('原图 ');
subplot(2,4,2);imshow(I1);xlabel('旋转30度 ');
subplot(2,4,3);imshow(I2);xlabel('旋转90度');
subplot(2,4,4);imshow(I3);xlabel('旋转120度');subplot(2,4,5);imshow(If,[5,50]);=xlabel('原图的像傅里叶频谱 ');
subplot(2,4,6);imshow(I1f,[5,50]);=xlabel('旋转30度的傅里叶图谱 ');
subplot(2,4,7);imshow(I2f,[5,50]);=xlabel('旋转90度的傅里叶图谱 ');
subplot(2,4,8);imshow(I3f,[5,50]);=xlabel('旋转120度的傅里叶图谱 ');

实验3

I =imread('cameraman.tif');
[M,N]=size(I);%M=512,N=512
I=im2double(I); %生成标准DCT变化中的矩阵(8x8)
n=8;[cc,rr]=meshgrid(0:n-1);
C=sqrt(2/n)*cos(pi*(2*cc+1).*rr/(2*n));
C(1,:)=C(1,:)/sqrt(2);%光亮度量化表
a=[16 11 10 16 24 40 51 61;12 12 14 19 26 58 60 55;14 13 16 24 40 57 69 56;14 17 22 29 51 87 80 62;18 22 37 56 68 109 103 77;24 35 55 64 81 104 113 92;49 64 78 87 103 121 120 101;72 92 95 98 112 100 103 99 ];%分块做DCT变换(8x8) DCT变换公式 正变换Y=CIC'
for i=1:8:Mfor j=1:8:NP=I(i:i+7,j:j+7);K=C*P*C';I1(i:i+7,j:j+7)=K;K=K./a; %量化(按位除)K(abs(K)<0.05)=0;  %舍掉的变换系数分别小于0.01 0.03 0.05I2(i:i+7,j:j+7)=K;  end
end%分块做DCT反变换(8x8),逆变换 P=C'YC
for i=1:8:Mfor j=1:8:NP=I2(i:i+7,j:j+7).*a;%反量化K=C'*P*C;I3(i:i+7,j:j+7)=K;     end
endsubplot(2,2,1);imshow(I);xlabel('原图 ');
subplot(2,2,2);imshow(I1);xlabel('DCT变换后的频域图像 ');
subplot(2,2,3);imshow(I2);xlabel('量化后的频域图像 ');
subplot(2,2,4);imshow(I3);xlabel('复原图像 ');

数字图像处理学习笔记4第四章 图像变换 附实验相关推荐

  1. 数字图像处理学习笔记(四)——数字图像的内插、度量、表示与质量

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  2. 数字图像处理学习笔记 六 彩色图像处理

    目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...

  3. 数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF

    数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF 一.概述 参考:特征点匹配+特征检测方法汇总 ORB的全称是Oriented ...

  4. 数字图像处理学习笔记(一):特征检测和匹配概述

    数字图像处理学习笔记(一):特征检测和匹配概述 参考博客: 特征点的匹配 SIFT特征详解 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 1.特征点概述 如何高效且准确的匹配出两个不同 ...

  5. 基于python的数字图像处理--学习笔记(三)

    基于python的数字图像处理--学习笔记(三) 前言 一.灰度拉伸 二.幂律(伽马)变换 三.对数变换 前言 进入冈萨雷斯的第三章内容,并用python实现功能.我更改了代码源,之前找到太烂了,代码 ...

  6. 数字图像处理学习笔记(六)——数字图像处理中用到的数学操作

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  7. C++ Primer 学习笔记(第四章:表达式)

    2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...

  8. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法

    机器学习理论<统计学习方法>学习笔记:第四章 朴素贝叶斯法 4 朴素贝叶斯法 4.1 朴素贝叶斯法的学习与分类 4.1.1 基本方法 4.1.2 后验概率最大化的含义 4.2 朴素贝叶斯法 ...

  9. 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法

    数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 一.概述: 提到特征点算法,首先就是大名鼎鼎的SIFT算法了.SIFT的全称是Scale Invariant Feature Transf ...

最新文章

  1. 自动化监控--添加itme的web页面详解
  2. 从国内的源使用pip安装库,提高安装速度
  3. 在QGraphicsView中拖动QGraphicsWidget
  4. 精简SWT FormLayout的用法
  5. Q-learning家族【强化学习】
  6. 十大经典排序算法详细总结 图形展示 代码示例
  7. vs2008保存超级慢
  8. plc与python之间实现通信的结构框图_Python设计模式 - UML - 通信图(Communication Diagram)...
  9. JS 闭包 正则(1)
  10. python 使用多线程进行压力测试
  11. 联想笔记本计算机在哪里找不到,联想笔记本电脑找不到WLAN怎么解决
  12. O2O C2C B2B B2C
  13. java 传入一个日期, 计算公历节日和农历节假日的常用类(包括除夕、清明节、母亲节、父亲节的算法)
  14. 7-1 厘米换算英尺英寸 (c语言)
  15. 有监督学习、无监督学习、半监督学习、强化学习
  16. GIT 中如何打标签(git tag)
  17. PageHelper.startPage与PageHelper.offsetPage区别
  18. Vue3+TS 快速上手 (尚硅谷)
  19. 小型企业网的搭建(企业网三层架构)
  20. AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

热门文章

  1. python语言arrows用法_python时区运算,时区,时间戳,夏令时讲解
  2. 【SQL基础-3】SQL常用函数
  3. Web前端开发工程师--面试要求
  4. 如何在阿里云上搭建个人网站(学习记录)
  5. 真实评测 i51155g7和锐龙r75700u选哪个好
  6. 好书推荐——从零开始学习 Julia 编程、数学和数据科学。
  7. 隧道放样方法+超欠挖计算方法+程序
  8. logstash集成elasticsearch报错: Attempted to resurrect connection to dead ES instance
  9. oracle将表导入到表空间,关于ORALCE一个表空间的数据导入到另一个表空间的方法(原创)...
  10. DRM系列(1)之DUMB BUFFER