一、图像格式转换
①RGB==>灰度图像 rgb2gray();
②RGB==>索引图像 rgb2ind();
③灰度图像==>索引图像 [X,map]=gray2ind(I,n);I为索引图像或二值图像,灰度图像n默认64,二值图像默认为2,map对应的颜色值为颜色图gray(n)中的颜色值;
④索引图像==>灰度图像 I = ind2gray(X,map),[X,map]对应索引图象,I为转换后的图像,输入的数据类型可以是double或unit8型,输出为double型;
⑤索引图像==>RGB图像 RGB = ind2rgb(X,map),输入图像数据类型为double\unit8\unit16型,输出为double型;
⑥其他图像==>二值图像 二值图像类型实际是logical型,功能函数im2bw(),输入不是灰度图像需要先将其转化为灰度图像,然后通过阈值法转换为二值图像;
二、图像处理常用函数
1. imadjust---调整图像强度值或颜色图
具体应用:调整灰度图像的对比度、制定对比度限制;调整彩色图像的对比度;基于标准差的图像对比度拉伸
2.分段线性变换
具体步骤:读取图片--转为灰度图像--获取图片大小---分x,y设置分段变换函数--显示输出
3.非线性对数变换
具体步骤:读取图片--RGB转灰度--为了防止后续计算数据溢出可以将数据转换为double型--进行对数变换--显示输出
4.图像平移操作,自定义immove函数,不考虑溢出时,溢出设为1;若考虑溢出,immove1函数;
具体就是获取图像大小--输入平移量--给出输出图像对应像素点和初始图像的关系;
5.图像的空间变换
使用imtransform---新版matlab使用imwarp函数
使用imtransform需要提前设置调用maketform函数
具体过程: T为对应的变换矩阵;
一般情况: ;
。
一般写成矩阵形式:
实现放射变换(即平移、缩放、旋转、剪切)的变换矩阵,如下图所示
放射性变换类型 | a | a | a2 | b0 | b1 | b2 |
平移∆x,∆y | 1 | 0 | ∆x
| 0 | 1 | ∆y |
缩放 | | 0 | 0 | 0 | Sy | 0 |
逆时针旋转 | | | 0 | -sinθ | cosθ | 0 |
水平切变 | 1 | 0 | 0 | | 1 | 0 |
垂直切变 | 1 | | 0 | 0 | 1 | 0 |
整体切边 | 1 | | 0 | | 1 | 0 |
三、图像的邻域操作
- 滑动邻域操作函数nlfilter(); 主要对图像进行中值滤波
- 列方向邻域操作函数colfilt(); 在图像上执行列式邻域过滤、
- 分离邻域操作函数blockproc()。
该函数可以实现图像的缩放、分块、RGB颜色图像的波段转换,具体可以参考matlab说明文档
四、图像的区域选取
多边形区域 roipoly( ):创建多边形蒙版、多边形外为黑色,多边形内为白色;
灰度ROI区域选择函数 roicolor( ):可以根据颜色选择区域,可以进行边缘标记;
区域填充函数 roifill( ):用掩膜填充图像,或者对图像指定区域进行填充;
区域滤波函数 roifilt2( ):使用多边形蒙版对图像进行滤波,只对蒙版区域进行;