这里整理下matlab的使用技巧,不定期更新。
1、二维矩阵的取值
- A(x,y) 表示二维矩阵第 x 行第 y 列位置的元素,当 x 为 : 时则表示所有的行。
>> A = [ 1,2,3; 4,5,6; 7,8,9 ];
>> A(2,1)
ans =
4
>> A(:,1)
ans =
1
4
7
>> A(1,:)
ans =
1 2 3
2、求矩阵的均值
若要求整个矩阵的均值,则为 mean( mean(X) ) 。
>>mean(mean(X))
也可使用mean2函数:
>>mean2(X)
3、求矩阵的均方差
若要求整个矩阵所有元素的均方差,则要使用std2函数:
>>std2(X)
4、对于图片边界的处理
通常我们有两种方式:
1)忽略图片边界。
2)扩张图片边界,特别是在边界部分比较大的情况下。
为什么会产生边界?图像与滤波器进行卷积时,通常处理的是中心点的像素值,因此在图像边界部分的像素就无法被覆盖。
扩充边界
% len 为滤波器的半径;
% 'symmetric'表示扩充的部分采用镜像的方式扩充
% 'both'表示图像四周都进行扩充,即图像处于中心。
% 具体可参考 help padarray
newImg = padarray(img,[len len],'symmetric','both');
在完成卷积操作之后,需要对操作后的数据进行修剪:
% newImg 表示待操作的数据,需要修剪的图片。
% 后一个参数表示:[起点坐标X,起点坐标Y,宽度,长度]
% 具体可参考 help imcrop
RGB1=imcrop(newImg,[1+len,1+len,n-len*2,m-len*2]);
5、求矩阵内的最大值及最小值
max(Matrix) %这个会给出每一列的最大值。
max(Matrix(:))
min(Matrix(:))
6、最大值滤波,最小值滤波
可以用ordfilt2函数
% 3×3的中值滤波
Y=ordfilt2(X,5,ones(3,3))
% 3×3的最小值滤波
Y=ordfilt2(X,1,ones(3,3))
% 3×3的最大值滤波
Y=ordfilt2(X,9,ones(3,3))
% 输出的是每个像素的东、西、南、北四个方向相邻像素灰度的最小值。
Y=ordfilt2(X,1,[0 1 0;1 0 1;0 1 0])