关于size()函数使用中的问题
(2008-06-05 02:50:39)有网友问下面一个问题
clear all;
I=imread('lena.jpg');
[m,n]=size(I);
len=50; %Len为量化步长
for i=1:m
end
figure;
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(I1);
问题出在第三行,将其改成[m,n,l]=size(I);即可。为什么呢?
因为没注意size()函数的特点。该函数的功能是返回矩阵的大小,即矩阵的行数、列数、面数等等。当矩阵X是3×4×5三维矩阵时
[m]=size(X); 得到m=3 4 5,即返回值m是一个一行三列的矩阵;
[m n]=size(X); 得到m=3,n=20,即参数的个数多于一个小于矩阵的维数时,最后一个参数的返回值是其余返回值的乘积;
[m n l]=size(X); 得到 m=3,n=4,l=5,即完整读取返回值;
[m n l p]=size(X); 得到 m=3,n=4,l=5,p=1,即参数的个数多于矩阵的维数时,多余参数的返回值都是1。
上面提到的问题由于图像矩阵I是三维矩阵,原程序中的n就是矩阵列数的3倍,所以在后续的处理中将I中三个页面数据都处理后放到一个二维矩阵中,故出现了结果中有三张图片的问题。
由于灰度图像的三个页面数据相同,所以结果中三张图片一样,如I是彩色图像,三个页面不同,处理结果中三张图片也不同,这样就更容易发现问题了。