您的位置:首页 > 其它

《数字图像处理》--冈萨雷斯(第二章)

2017-09-10 10:29 309 查看

基本原理

数字图像的表示

​ 坐标约定:

多数图像处理书籍中所用的坐标约定

图形处理工具箱中所用的坐标约定

图像的矩阵表示

读取图像

>> f = imread(filename);


​ filename 是一个含有图像文件全名的字符串,此处可以用相对路径和绝对路径

>>size(f)


​ 函数size可以给出一幅图像的行数和列数

>> whos f


函数whos可以显示出一个数组的附加信息


显示图像

>> imshow(f,G)


​ f是一个图像数组,G是显示该图像的灰度级数(若G省略,则默认的灰度级数是256)

​ 其他表示法:

>> imshow(f,[low,high])


>> imshow(f,[ ])


​ 同时显示两个图像

>> imshow(f), figure, imshow(g)


保存图像

>> imwrite(f,'filename')


>> imwrite(f,'firstImage','tif')


​ 或

>> imwrite(f,'firstImage.tif')


使用imfinfo保存图像

>> imfinfo filename


​ 执行完此命令后会输出该图片的相关信息,可通过相关信息了解该图片相关属 性

imwrite的另一种常用但只适用于tif图像的语法

imwrite(g,'filename.tif','compression','parameter','resolution',[colres rowres])


利用print保存图像可以获得更多的输出参数

print -fno -dfileformat -rreson filename


图像类和类型间的转换

im2uint8




​ 函数im2uint8将输入中所有小于0 的值设置为0 ,所有大于1 的值设置为 255 再将所有的数都乘255,并将结果四舍五入为最接近的整数后,就完成了转换。

im2double

数组索引

​ 作用:简化了数组操作,而且提高了程序的运行效率。

向量索引

向量的第一个元素下标为1

.'
行向量转换为列向量

函数 linkspace

x = linspace(a, b, n)

矩阵索引

矩阵中分号的作用,与前面提到的取消命令的输出或在一行中写入多条命令时所用分号的作用是不同的

矩阵中最后一个元素的索引可用 end 来代替





​ 其中E显示了A中行1列2,行3列2,行1列3,行3列3对应的值

使用数组索引对图像进行简单的操作

翻转

此处遇到的问题:






​当用此图片进行翻转时,出现如下状况:



​ 经过检验发现 size(f) 有三个参数,上网查询知道是由于原图片为彩色图像,改为黑白图像即可




原图像




翻转后的图像



部分图像

一些重要的标准数组

zeros(M,N)

ones(M,N)

true(M,N)

false(M,N)

magic(M)

rand(M,N)

randn(M,N)

M函数编程简介

M文件组成部分

函数定义行

H1行

帮助文本

函数体

命令

​ 函数行:

​ 函数定义行的形式为:function [outputs] = name(inputs)

​ 输入必须在()内,输出必须在[ ]内,但是如果输出只有一个变量则可以 省略[ ]

​ H1行:

​ 该行提供了关于M文件的重要摘要信息

​ 帮助文本:

​ 跟在H1行后面的文本块,为函数提供注释或在线帮助。

​ 函数体:

​ 包含了所有执行计算并给输出变量赋值的MATLAB代码。

​ 例如执行sumprod.m文件

>> edit sumprod


运算符

执行数值计算的算术运算符

在数量上比较操作数的关系运算符

执行韩式AND、OR和NOT的逻辑运算符

一些重要的变量和常数

函数返回值
ans最新的答案
eps浮点数的相对精度
i(或j)虚数单位
NaN或nanNot-a-Number
pi3.14159265358979
realmax计算机所能表示的最大浮点数
realmin计算机所能表示的最小浮点数
version

流控制

​ if、else、for 、 while、 break、continue…

​ 将例2.12中的

“`

for r = rx:rowhogh

xcount = xcount + 1;

ycount = 0;

for c  = cy:colhigh

ycount = ycount + 1;

s(xcount,ycount) = f(r, c);

end

end


“`

​ for改成while

r = rx;
while r~=rowhigh
r = r + 1;
xcount = xcount + 1;
ycount = 0;
c = cy;
while c~=colhigh
c = c + 1;
ycount = ycount + 1;
s(xcount,ycount) = f(r, c);
end
end


代码优化

交互式I/O

单元数组与结构简介

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图像处理 图形