2014-10-18 3 views
0

Почему, когда я читал изображение im = imread('pears.png') Я вижу в рабочем пространстве 486x732x3 блок 8, но когда я запускаю [height, width] = size(im), я получаю высоту 486 и ширину 2196 ?. Когда я читаю m83.tif, все в порядке. это связано с цветом? какой тип файла будет умножен на 3, чем?Размер изображения при использовании imread и размер не совпадают - matlab

ответ

1

После документации imread:

A = imread(FILENAME,FMT) ... 

If the file contains a grayscale image, A is an M-by-N array 
If the file contains a truecolor image, A is an M-by-N-by-3 array. 

Таким образом, то, что вы хотите иметь только первые размеры. Однако, поскольку im является трехмерным, а размер будет возвращать размер перестроенного массива при запросе только двух измерений. Вы увидите, что ваши второй dimeions является продуктом размер (им, 2) * размер (им, 3).

Просто используйте

[height, width, ~] = size(im) 

Это будет запрашивать три измерения, но падение третьего параметра вывода. Также использование:

height = size(im,1); 
width = size(im,2); 

будет работать и является решением для сохранения.

Смотрите следующий код для получения дополнительной clarifictaion:

>> im = ones([40,20,3]); 
>> [h,w] = size(im) 

h = 

    40 


w = 

    60 

>> [h,w,~] = size(im) 

h = 

    40 


w = 

    20 

>> h = size(im,1) 

h = 

    40 

>> w = size(im,2) 

w = 

    20