一、综述

图像变换可以分为正交变换(积分变换)和几何变换两种。积分变换主要有离散傅里叶变换(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. 记一次数据库查询语句的优化
  2. 8种常见机器学习算法比较
  3. pip安装时报错:以一种访问权限不允许的方式做了一个访问套接字的尝试
  4. 重置手机_【轻松办税】ITS客户端申报密码重置不会操作?看过来,3分钟包你会!...
  5. input的type属性的修改
  6. 广西高职计算机网络技术,计算机网络技术专业考试大纲-广西职业技术学院.DOC...
  7. 浅谈python使用多态跟不用多态的区别_python 多态和 super 用法
  8. C++应用通信服务器:MYCP功能介绍
  9. python中delete怎么用_python删除np.deletePython基础教程05 - 缩进和选择
  10. sysstat工具的用法
  11. mysql 触发器 lod_MySQL--初探触发器的使用和理解
  12. Atitit 常用数据校验规则
  13. Navicat for MySQL触发器更新和插入操作
  14. Excel如何导出自定义架构xml
  15. matlab计算涡度的函数_流函数涡量法的二维方腔流数值模拟matlab编程.doc
  16. Greenplum字段拼接
  17. MYSQL 索引 主键 外键
  18. .net core系列源码地址介绍
  19. PHP header网页安全认证
  20. [跬步]说说如何自主学习

热门文章

  1. 通过 Git 将代码提交到 GitHub(上)
  2. 【NOJ1149】【算法实验四】旅游预算
  3. 数据库实验七——视图、索引及数据安全
  4. 分享五个可以自助小程序搭建的网站
  5. 公式法求圆周率的近似值——泰勒公式展开 (内含double与float的比较)
  6. java字符串数组删除_如何从java中的字符串数组中删除特定的值?
  7. 云端开发在阿里的典型应用场景
  8. Eclipse注释日期格式
  9. js数组遍历方法总结
  10. Linux Redis清理缓存