MATLAB图像变换
一、综述
图像变换可以分为正交变换(积分变换)和几何变换两种。积分变换主要有离散傅里叶变换(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图像变换相关推荐
- MATLAB图像变换四
I = fitsread('solarspectra.fts');%读取fts格式图像 I = mat2gray(I);%转化为灰度图像 BW = edge(I);%转化为二值图像 subplot(1 ...
- 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换
文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...
- 【基于MATLAB的数字图像处理】第三章·基本图像变换
系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...
- 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换
文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...
- Matlab之图像变换技术(十二)
图像变换是将图像从空间域变换到变换域.图像变换的目的是根据图像在变换域的某些性质对其进行处理.通常,这些性质在空间城内很难获取.在变换城内处理结束后,将处理结果进行反变换到空间城. 这里将详细介紹图像 ...
- matlab矩形图像变换为圆形
转自:https://www.cnblogs.com/tiandsp/p/3870290.html 最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形. 变换原理就是按变换前后像素到圆心的距离 ...
- [matlab数字图像处理4]打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法
%任务:打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法: %本作业使用MATLAB2021A完成 clear; clc; close all f=imread("4.j ...
- 【图像几何】基于傅里叶+DCT图像变换matlab代码
1 简介 快速傅立叶变换(FFT)改进了离散傅立叶变换(DFT)的计算过程,被广泛应用于数字图像的实时处理中.在相位相关技术的基础上,提出了一种新的图像配准算法,即在需要配准的两幅图像中心选取相同区域 ...
- 数字图像处理 关于matlab的图像变换
1.目的 熟悉及掌握图像的傅里叶变换.离散余弦变化原理及性质,实现图像的频率域变换. 2.任务和要求and代码 1. 读入一幅图像,分别为图像添加叠加密度为0.04的椒盐噪声,均值为0方差为0.02的 ...
最新文章
- C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
- pd16.5生成mysql列说明_PowerDesigner16逆向工程生成PDM列注释(My Sql5.0模版)
- A new node couldn't be inserted because one with the same name exists. (VERR_CFGM_NODE_EXISTS)
- approach for attending ieee conferences
- 定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法。 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值。
- 换脸系列——整脸替换
- 教你理清SpringBoot与SpringMVC的关系
- 前端—每天5道面试题(十三)
- centos系统在Visual Studio Code 中使用超级管理员权限保存文件
- 代码高亮插件——wangHightLighter.js——demo演示
- php array函数 array_filter 过滤数组中的空值
- 关于Keil4 C51版本可以编译但是无法完成编译的问题解决
- 威漫哨兵机器人_漫威:哨兵机器人天下无敌?这几位变种人就不把他们放在眼里...
- ESP32用自签CA进行MQTT的TLS双向认证通信
- 网易云课堂-微专业Java
- 豆瓣评分小程序Part-3
- 一个简单的Java Applet应用程序
- itext html转pdf 图片,itext2.0.8 将 HTML 转换成 PDF, 完美 CSS, 带图片, 自动分页
- [Scene Graph] Neural Motifs: Scene Graph Parsing with Global Context 论文解读
- 当局讳莫如深 青龙县避震成功经验获联合国嘉奖