数字图像处理中MATLAB的相关基础知识

矩阵的创建方式

在MATLAB中创建矩阵的方法一般有3种:第一种是直接输入矩阵元素;第二种是通过调用函数生成特殊矩阵;第三种是利用M文件创建矩阵。

1.元素直输法创建矩阵

在MATLAB中,创建一个矩阵最简单的方法是使用矩阵构造符号[ ],在[ ]中,使用逗号“,”或空格“ ”分隔矩阵的列,使用分号“;”分隔矩阵的行。

2.调用函数生成特殊矩阵

0矩阵,A=zeros(n):生成n乘n的全零矩阵;A=zeros(m, n)或者A=zeros([m, n])生成m乘n的全零矩阵;

1矩阵,A=ones(n)或A=ones(m, n)或A=ones([m, n]);

单位矩阵,A=eye(n)或A=eye(m, n)或A=eye([m, n]);

魔方矩阵,A=magic(n);

均匀分布随机矩阵,A=rand(m, n),生成m乘n的0~1之间的均匀分布的随机矩阵;100*rand(m, n),把生成的0~1之间的随机矩阵的值变为为0~100之间的随机矩阵;round(100*rand(m, n)),把生成的0~100随机数取整数。

正态分布随机矩阵,A=normrnd(MU,SIGMA, m, n):生成m×n形式的正态分布的随机数矩阵。

3.利用M文件创建矩阵

对于比较大且复杂的矩阵,可以为它专门建立一个M文件。

(1)启动MATLAB文本编辑器,并输入待建立的矩阵:

data=[11 21 31 41 51 61 71 81 91;

      12 22 32 42 52 62 72 82 92;

      13 23 33 43 53 63 73 83 93];

(2)把输入的矩阵存盘(设文件名为 matrix.m)

(3)在MATLAB命令行窗口中输入matrix,就可以运行该M文件,就可以自动建立一个名为data的矩阵,可供使用。在MATLAB中创建矩阵的方法一般有3种:第一种是直接输入矩阵元素;第二种是通过调用函数生成特殊矩阵;第三种是利用M文件创建矩阵。

在MATLAB中创建矩阵的方法一般有3种:第一种是直接输入矩阵元素;第二种是通过调用函数生成特殊矩阵;第三种是利用M文件创建矩阵。

矩阵的类型及转换

MATLAB中读入图像的数据类型是uint8,uint型的优势在于节省空间,涉及运算时要转换成double型,除此之外MATLAB还支持无符号整型(uint8和uint16)。

double函数只是将读入图像的uint8数据转换为double类型,一般不使用;常用的是im2double函数,将uint8图像转为double类型,范围为0-1,如果是255的图像,那么255转为1,0还是0,中间的做相应改变。如果不转换,在对uint8进行加减时会产生溢出。

表1 数据类型
uint8uint16doublesingle
无符号8位整型无符号16位整型双精度浮点类型单精度浮点类型

一般常用的转换函数的基本用法如下:

im2double():将图像数组转换成double精度类型;

im2uint8():将图像数组转换成unit8类型;

im2uint16():将图像数组转换成unit16类型;

im2single():将图像数组转换为单精度浮点类型。

数字图像处理函数及用法

表2 函数及用法

imread(‘filename’)

将图片以矩阵的形式存储,图片需要在matlab路径下。支持png、jpg、jpeg、tiff、bmp等格式的图片。

imshow(f)

imshow(f,[low high])

将f中小于等于low的处理定义为black,大于等于high的处理定义为white。

imshow(f,[])

将f中最小的元素设定为low,最大元素设定为high,按照线性规则进行一一映射。

imwrite(f,’filename’)

将f矩阵所表示的图片写入'filename'中。

imfinfo(’filename’)

获取一张图片的具体信息,包括图片的格式、尺寸、颜色数量、修改时间等等。

impixel(A)

确定像素颜色值。

bwlabel(A,n)

返回一个和A大小相同的矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为12num(连通区域的个数)。n的值为48,表示是按4连通寻找区域,还是8连通寻找,默认为8

numel(A)

返回数组A中的元素个数。

imresize()

imresize(A, m)

比例缩放图像。m大于1,放大图像;m小于1,缩小图像。

imresize(A,[numrows numcols])

非比例缩放图像,numrowsnumcols分别指定目标图像的高度和宽度。

imrotate(A,angle,method,bbox)

对图像进行旋转操作

angle表示旋转度数,正数表示逆时针旋转,负数表示顺时针旋转。

method参数改变插值算法:

'nearest':最邻近线性插值

'bilinear':双线性插值

'bicubic':双三次插值

bbox参数指定输出图像属性:

'crop':通过对旋转后的图像进行裁剪,保持旋转后输出图像的尺寸和输入图像A的尺寸一样。

'loose':使输出图像足够大,以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。

imadjust(A,[low_in; high_in],[low_out; high_out],gamma)

用于调节灰度图像的亮度或彩色图像的颜色矩阵

low_inhigh_in之间的值映射到low_outhigh_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了。

gamma指定描述值A和转化值关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,默认为线性映射。

mean2(f),取f中全部元素的平均值

mean(f,1)

计算f中的全部列元素平均值,返回行向量。

mean(f,2)

计算f中的全部行元素平均值,返回列向量。

size(A),输出矩阵A的行数和列数

size(A,1)

输出矩阵A的行数。

size(A,2)

输出矩阵A的列数。

转换函数

im2double(A)

将图像数组转换成double类型。

im2uint8(A)

将图像数组转换成unit8类型。

im2uint16(A)

将图像数组转换成unit16类型。

im2bw(A, level)

使用阈值变换法把灰度图像转换成二值图像,level设置阈值,取值范围[0, 1]

logical(A)

将数值数组A转化为二值图像,将A中所有非0的值转化为逻辑1,0转化为逻辑0。

uint8(A)

A中大于255的数全部强制置为255,而小于255的部分则保持原样不变。

mat2gray(A)

将图像矩阵A归一化为,归一化后矩阵中每个元素的值都在0到1范围内(包括0和1)。

rgb2gray(A)

RGB图像或彩色图转换为灰度图像

 

程序代码说明 P0201:MATLAB赋值 P0202:MATLAB的for循环 P0203:MATLAB的for循环和if条件 P0205:MATLAB图像处理的基本操作 P0206:MATLAB高级图像处理操作 P0207:根据RGB图像创建一幅灰度图像 P0208:二值图像的取反操作 P0209:用imshow函数显示图像 P0210:在同一个窗口内显示两幅图像 P0301:数字图像矩阵数据的显示及其傅立叶变换 P0302:二维离散余弦变换的图像压缩 P0303:采用灰度变换的方法增强图像的对比度 P0304:直方图均匀化 P0305:模拟图像受高斯白噪声和椒盐噪声的影响 P0306:采用二维值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 P0307:采用MATLAB的函数filter2对受噪声干扰的图像进行均值滤波 P0308:图像的自适应魏纳滤波 P0309:运用5种不同的梯度增强法进行图像锐化 P0310:图像的高通滤波和掩模处理 P0311:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理 P0312:利用巴特沃斯(Butterworth)高通滤波器对图像进行锐化处理 P0401:用Prewitt算子检测图像的边缘 P0402:用不同σ值的LoG算子检测图像的边缘 P0403:用Canny算子检测图像的边缘 P0404:图像的阈值分割 P0405:用水线阈值法分割图像 P0406:对矩阵进行四叉树分解 P0407:将图像分为文字和非文字的两个类别 P0408:形态学梯度检测二值图像的边缘 P0409:形态学实例——从PCB图像删除所有电流线,仅保留芯片对象 P0502:计算图像的欧拉数 P0610:神经网络的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值