matlab boundary函数,Matlab中的细节问题及技巧(持续更新)

本文介绍了MATLAB在图像处理中的一些常见问题,包括图像尺寸获取、变量类型、类型转换、数组索引和句柄使用。重点讨论了图像处理函数如`size`、变量类型转换、以及`im2uint8`、`im2double`等图像类和类型转换函数的使用。此外,还提到了MATLAB中与边界处理相关的函数,如`bwareaopen`、`imclearborder`、`bwboundaries`等。
摘要由CSDN通过智能技术生成

接触Matlab是从大二开始的,但那时对数字信号处理不怎么感兴趣,因此一学期下来,连编写一个最基本的function都不会……

大三开始学习数字图像处理,无奈,只好重拾Matlab。虽然Matlab的交互界面做的很好,Manual尤其强大,但由于基础不好,在写程序时还是不时地被细节问题困扰,因此决定用此文来记录那些让我不胜其烦的细节问题,同时也分享给大家

1.

在进行图像处理时常常会用到图像的长宽像素信息,一般语句为

[M N]=size('figurename');

这里M是图像二维矩阵的行数,N是二维图像的列数。比如下面的图像,是一个5*8大小。学过framebuffer的同学应该知道,对于显示屏,一般的坐标是从左向右是x坐标,从上到下是y坐标,因此对于图像来说N表示的是x方向上的大小,M表示y方向的大小。如果不注意,在进行图像几何变换时要注意。否则常常会把因为习惯问题把M误以为是x方向的,而N是y方向的。

a4c26d1e5885305701be709a3d33442f.png

2.关于Matlab中变量的类型问题。在Matlab中,我们处理的是整数坐标,但Matlab中像素值本身并不是整数,在Matlab和IPT为表示像素值所支持的数据类型有以下10种:

①double  8byte/pix

②uint8

1byte/pix  平时我们用imread读出图像时一般都是这个类型的

③uint16  2byte/pix

④uint32  4byte/pix

⑤int8

1byte/pix

⑥int16

2byte/pix

⑦int32

4byte/pix

⑧single  4byte/pix

⑨char

2byte/pix

第十种只有在二值图像中才会用到,即logical类的。logical型虽然只用1bit就可以表示,但在Matlab中却需要占用1byte。为嘛?其实我也不清楚,可能Matlab不能像C一样进行位操作吧。

我们知道,Matlab内部是以double类型进行计算的,因此在初始化一个变量时,如果不指定你要给变量赋什么类型的值,它就默认是double型的。如:

a=1;

则a将占8byte,假如你想把a初始化为一个logical类型的,这这样写:a=logical(1);

用一个变量对另一个变量进行初始化,如果不进行类型转换,则被初始化的变量将和用于初始化的变量的类型一致,看下面的例子:

>> a=uint8([255 255])

a

=

255  255

>> b=a(1)+a(2)

b

=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值