MATLAB数字图像处理(一)基础操作和傅立叶变换
数字图像处理是一门集计算机科学、光学、数学、物理学等多学科的综合科学。随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域取得了大量的应用,推动了社会的发展。其中,遥感领域中,对于影像数据的处理均基于数字图像处理的技术。而遥感影像数据作为地理信息科学的重要数据源,如何从中获取有用的信息,是地理信息数据处理中重要的内容。
MATLAB作为数学领域应用最广泛的一种软件,集成了对于图片处理的函数和功能,成为了处理数字图像问题的佼佼者。其出众的计算能力和简便的绘图能力可以有效进行数字图像的变换和操作。本文探究了MATLAB(R2014a)软件下数字图像处理部分简单内容方法的操作实现,包括图像变换、图像增强等。
由于时间所迫和水平不足,对于本文中的问题请指出。
在这里首先将介绍基本的操作。
1 数字图像处理基础
1.1 MATLAB图像处理基本操作
本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena”图片进行操作的。原图如下(Figure 1):
Figure 1
首先,在MATLAB中显示这幅图片:
I=imread('lena.jpg');
imfinfo('lena.jpg')
imshow(I);
其中,imread()可以读取图片,imfinfo()可以获取图片的信息(Figure 2),imshow()可以显示图片。
Figure 2
从Figure 2中可以看出,该图片格式为png,长宽均为512px,颜色类型为真彩色。
处理后的图片还需要进行保存:
imwrite(I,'lenaSave.jpg');
1.2 图像数字化
使用imread()读取图像后,可以看到,读入的图片I是以一个512*512*3的矩阵进行保存的,即分别是RGB颜色的数字图片。为了方便起见,在本文中,笔者将lena图进行了转换,转换为灰度图,即保存为一个512*512*1的矩阵。
为了完成这样一个步骤,MATLAB中提供了相应的函数:
I1=rgb2gray(I);
imshow(I1);
I1以512*512*1的矩阵形式进行存储。效果如下图(Figure 3):
Figure 3
1.3 直方图
为了显示图像灰度的分布情况,还需要绘制灰度直方图。可以使用如下代码:
figure,imhist(I1);
效果如下(Figure 4):
Figure 4
1.4 图像噪声的添加
为了完成多种图像处理的操作和试验,还可以对图片添加噪声。所用函数为imnoise (I, type),该函数中的type可以为5种噪声参数,分别为:'gaussian'(高斯白噪声),'localvar'(与图象灰度值有关的零均值高斯白噪声),'poisson'(泊松噪声),'salt & pepper'(椒盐噪声)和'speckle'(斑点噪声)。
以下为高斯噪声(Figure 5)和椒盐噪声(Figure 6)的代码和效果:
I2=imnoise(I1,'gaussian');
figure,imshow(I2);
Figure 5
I3=imnoise(I1,'salt & pepper');
figure,imshow(I3);
Figure 6
2 图像变换
2.1 傅立叶变换
傅立叶变换可以将图像从空间域转换到频率域,然后再进行相应的处理。MATLAB中有傅立叶变换的函数。
原图:
Figure 7
傅立叶变换:
F=fft2(I1);
S=abs(F);
figure,imshow(S,[]);
效果:
Figure 8
看上去是一片黑,事实上在全图的左上角可以看出有一个白点(即左上角缺失了)。
平移:
Fc=fftshift(F);
figure,imshow(abs(Fc),[]);
效果:
Figure 9
将频率平移到中间。
频谱图:
figure,imshow(uint8(abs(Fc/256)));
效果:
Figure 10
之所以在本例中没有使用lena的图片,是因为该图傅立叶频谱图并无特点。
傅立叶逆变换:
f=real(ifft2(F)/255); figure,imshow(f);
效果:
Figure 11
经过逆变换后,仍然为原图。
具体代码请参考:https://github.com/kkyyhh96/DigitalImageProcessing/tree/master/code中kyh_One.m和kyh_Two1.m的内容。
MATLAB数字图像处理(一)基础操作和傅立叶变换的更多相关文章
- matlab数字图像处理 入门基础
本代码基于张铮主编的<数字图像处理与机器视觉>一书. 源图片:lena A = imread ('lena.jpg'); %读入图像lena.jpg,赋给变量A %imwrite(A,'l ...
- 第一章 MATLAB数字图像处理编程基础
1 为什么用MATLAB MATLAB的图像处理工具箱(Image Processing Toolbox,IPT)封装了一系列不同图像处理需求的标准算法,它们都是通过直接或间接调用MATLAB中矩阵运 ...
- MATLAB数字图像处理(二)图像增强
1 图像增强 1.1 直方图均衡化 对于灰度图像,可以使用直方图均衡化的方法使得原图像的灰度直方图修正为均匀的直方图. 代码如下: I2=histeq(I1); ...
- MATLAB数字图像处理基础
图像的输入.输出和显示 1.图像的输入 imread('filename'), 实际中写的是 >> f = imread('sky.jpg'); 2.图像的显示 imshow ...
- MATLAB数字图像处理学习笔记
我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...
- 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform 标签: 图像处理MATLAB数字图像处理
实验要求: Objective: To further understand the well-known algorithm Fast Fourier Transform (FFT) and ver ...
- MatLab数字图像处理实战(赵小川)-sift原理
- matlab数字图像处理-冈萨雷斯-数据类和图像类之间的转换
亮度图像 二值图像 属于注释 数据类间的转换 图像类和类型间的转化 把一个double类的任意数组转换成[0,1]的归一化double类数组----->mat2gray 图像类和类型间的转化例题 ...
- matlab数字图像处理-冈萨雷斯-读取,显示,保存图像
图像读取:imread(filename) 显示图像‘ 显示多幅图像 保存图像 b 计算压缩比
随机推荐
- .net remoting和wcf自托管——一个bug引发的警示
一.解决问题,需要深入,并从细节入手,多从代码找原因,不能认为代码是死的,不会出错: 之前代码都运行良好,突然某一天,在我电脑上出问题了.出了问题,那就应该找出原因.其实这个问题,本身并不难,好歹给你 ...
- OSError: [Errno 22] Invalid argument: 'D:\x07ckup\test.txt'
使用with open("D:\backup\test.txt","rt") as f:报上面的错误,将上面的语句改成 with open(r"D:\ ...
- C# Winform中窗体的美化—— 用IrisSkin轻松实现换肤功能
今天经前辈提醒才知道winform窗体还有美化工具,呵呵,不得不说,孤陋寡闻了.下面总结一下irisskin2的使用步骤和遇到的问题及解决办法. 1.网址:http://www.pc6.com/sof ...
- bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...
- 感知机学习算法Java实现
感知机学习算法Java实现. Perceptron类用于实现感知机, 其中的perceptronOriginal()方法用于实现感知机学习算法的原始形式: perceptronAnother()方法用 ...
- Linux内核 - 定时器
#include <linux/timer.h> //头文件 struct timer_list mytimer; //定义变量 static void my_timer(unsigned ...
- md5加密(1)
package com.js.ai.modules.pointwall.util; import java.security.MessageDigest; import java.security.N ...
- 没有dig命令的结觉方法
-bash: dig: command not found rpm -qa bind-utils 查看没有没安装 bind-utils 包 yum install -y bind-utils 解决
- LAMP 3.0 mysql配置讲解
mysql 安装好后,我们是从安装包的 support-files 里面复制过来一个模板配置文件,默认 mysql 配置文件是在/etc/my.cnf 下,其实这个路径或者文件名字我们是可以修改的,在 ...
- eclipse中的TODO和FIXME
最近使用eclipse开发代码时,公司要求按他们制定代码规范编写代码,其他都还好,因为基本都养成良好习惯了,但TODO和FIXME就有点陌生,查了一下资料,发现笔者寡闻了,果然学海无涯,好了,下边解释 ...