一、综述

图像变换可以分为正交变换(积分变换)和几何变换两种。积分变换主要有离散傅里叶变换(Discrete Fourier Transform,DFT)、离散余弦变换(Discrete Cosine Transform,DCT)、小波变换(Wavelet Transform,WT)等,其基本思想就是将图像信号从空间域变换到频率域。为什么要这样处理呢?目的是简化问题的求解。举个例子,要在空间域中做卷积运算,其难度相当大,但是通过离散傅里叶变换,可以将空间域中的卷积运算转化为频率域中的乘法运算,化繁为简。所以,求解这类问题的一般思路是:

1)从空间域转化到频率域,使用离散傅里叶变换;

2)在频率域内求解;

3)从频率域反向变换到空间域,使用离散傅里叶变换的反变换。

几何变换简单一些,就是图像的平移、伸缩、旋转、镜像以及由这几种变换组合而成的复合变换,其数学基础是一个叫做其次坐标的东西,每种变换都有一个该坐标下的变换矩阵,最终就是矩阵的乘法运算。

二、MATLAB实现

  • 离散傅里叶变换
% 图像的离散傅里叶变换% 程序执行前的清理工作
close all;
clear;
clc;% 读取图像
[filename,pathname,filter] = uigetfile({'*.jpg;*.jpeg;*.bmp;*.gif;*.png'},'选择图片');
if filter == 0return;
end
img_filename = fullfile(pathname,filename);
input_img=imread(img_filename);% 转化为灰度图
input_img = rgb2gray(input_img);% 快速傅里叶变换
J = fft2(input_img);% 频率变换
K = fftshift(J);% 图像显示
subplot(1,3,1);
imshow(input_img);
title('原始图像');subplot(1,3,2);
imshow(J);
title('FFT变换结果');subplot(1,3,3);
imshow(K);
title('零点平移');
  • 离散余弦变换
% 图像的离散余弦变换% 程序执行前的清理工作
close all;
clear;
clc;% 读取图像
[filename,pathname,filter] = uigetfile({'*.jpg;*.jpeg;*.bmp;*.gif;*.png'},'选择图片');
if filter == 0return;
end
img_filename = fullfile(pathname,filename);
input_img=imread(img_filename);% 转化为灰度图
input_img = rgb2gray(input_img);% 离散余弦变换
J = dct2(input_img);% 图像显示
subplot(1,2,1);
imshow(input_img);
title('原始图像');subplot(1,2,2);
% 对数显示图像
imshow(log(abs(J)),[]);
title('DCT变换结果');

  • 镜像变换
% 图像的镜像变换% 程序执行前的清理工作
close all;
clear;
clc;% 读取图像
[filename,pathname,filter] = uigetfile({'*.jpg;*.jpeg;*.bmp;*.gif;*.png'},'选择图片');
if filter == 0return;
end
img_filename = fullfile(pathname,filename);
input_img=imread(img_filename);% 转化为灰度图
input_img = rgb2gray(input_img);% 返回图像的大小矩阵1*2
S = size(input_img);% 水平镜像
H(1:S(1,1),1:S(1,2)) = input_img(1:S(1,1),S(1,2):-1:1);% 垂直镜像
V(1:S(1,1),1:S(1,2)) = input_img(S(1,1):-1:1,1:S(1,2));% 对角镜像
A(1:S(1),1:S(2)) = input_img(S(1):-1:1,S(2):-1:1); % 图像显示
subplot(2,2,1);
imshow(input_img);
title('原始图像');subplot(2,2,2);
imshow(H);
title('水平镜像');subplot(2,2,3);
imshow(V);
title('垂直镜像');subplot(2,2,4);
imshow(A);
title('对角镜像');

  • 伸缩变换
%将图像大小归一化为500*400大小
function normal_img = normalize(input_img)%最近邻插值,效果不好,有马赛克
%nearest = imresize(input_img,[400 500],'nearest');
%双线性插值,效果一般
%bilinear = imresize(input_img,[400 500],'bilinear');
%双三次插值,效果很好
% bicubic = imresize(input_img,[400 500],'bicubic');
normal_img = imresize(input_img,[400 500],'bicubic');

MATLAB图像变换相关推荐

  1. MATLAB图像变换四

    I = fitsread('solarspectra.fts');%读取fts格式图像 I = mat2gray(I);%转化为灰度图像 BW = edge(I);%转化为二值图像 subplot(1 ...

  2. 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换

    文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...

  3. 【基于MATLAB的数字图像处理】第三章·基本图像变换

    系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...

  4. 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换

    文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...

  5. Matlab之图像变换技术(十二)

    图像变换是将图像从空间域变换到变换域.图像变换的目的是根据图像在变换域的某些性质对其进行处理.通常,这些性质在空间城内很难获取.在变换城内处理结束后,将处理结果进行反变换到空间城. 这里将详细介紹图像 ...

  6. matlab矩形图像变换为圆形

    转自:https://www.cnblogs.com/tiandsp/p/3870290.html 最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形. 变换原理就是按变换前后像素到圆心的距离 ...

  7. [matlab数字图像处理4]打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法

    %任务:打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法: %本作业使用MATLAB2021A完成 clear; clc; close all f=imread("4.j ...

  8. 【图像几何】基于傅里叶+DCT图像变换matlab代码

    1 简介 快速傅立叶变换(FFT)改进了离散傅立叶变换(DFT)的计算过程,被广泛应用于数字图像的实时处理中.在相位相关技术的基础上,提出了一种新的图像配准算法,即在需要配准的两幅图像中心选取相同区域 ...

  9. 数字图像处理 关于matlab的图像变换

    1.目的 熟悉及掌握图像的傅里叶变换.离散余弦变化原理及性质,实现图像的频率域变换. 2.任务和要求and代码 1. 读入一幅图像,分别为图像添加叠加密度为0.04的椒盐噪声,均值为0方差为0.02的 ...

最新文章

  1. C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
  2. pd16.5生成mysql列说明_PowerDesigner16逆向工程生成PDM列注释(My Sql5.0模版)
  3. A new node couldn't be inserted because one with the same name exists. (VERR_CFGM_NODE_EXISTS)
  4. approach for attending ieee conferences
  5. 定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法。 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值。
  6. 换脸系列——整脸替换
  7. 教你理清SpringBoot与SpringMVC的关系
  8. 前端—每天5道面试题(十三)
  9. centos系统在Visual Studio Code 中使用超级管理员权限保存文件
  10. 代码高亮插件——wangHightLighter.js——demo演示
  11. php array函数 array_filter 过滤数组中的空值
  12. 关于Keil4 C51版本可以编译但是无法完成编译的问题解决
  13. 威漫哨兵机器人_漫威:哨兵机器人天下无敌?这几位变种人就不把他们放在眼里...
  14. ESP32用自签CA进行MQTT的TLS双向认证通信
  15. 网易云课堂-微专业Java
  16. 豆瓣评分小程序Part-3
  17. 一个简单的Java Applet应用程序
  18. itext html转pdf 图片,itext2.0.8 将 HTML 转换成 PDF, 完美 CSS, 带图片, 自动分页
  19. [Scene Graph] Neural Motifs: Scene Graph Parsing with Global Context 论文解读
  20. 当局讳莫如深 青龙县避震成功经验获联合国嘉奖

热门文章

  1. std::function 的性能陷进
  2. BIOS追code之DXE phase
  3. python开源web项目-Python开源项目Top30
  4. 车辆计数系统 python实现
  5. SIT1040T,芯力特CAN接口芯片,参数描述,完美替代TJA1040
  6. Android数据库操作
  7. 软件工程与UML图的关系
  8. 12306官方火车票各种Api接口
  9. pythonw是什么意思_Python3中的真值测试
  10. APP 游戏审核改动