почему размер (ось Y) изображения imread больше реального

У меня есть изображение ('strawberry.jpg') strawberry.jpg

image=imread('strawberry.jpg');
imshow(image);

он отображается, как показано ниже.

imshowimage

Я думаю, что оси x и y показаны в пикселях фотографии. Но когда я пытаюсь получить размер с помощью

 [x,y]=size(image)

Тогда я получил x = 177 и y = 852. Но значения не близки к тем, что показаны на изображении imshow.

Итак, я делаю что-то не так? или [x,y]=size (изображение) означает другой размер, а не размер в пикселях, который отображается в изображении imshow.

Спасибо


person mee mee    schedule 02.05.2016    source источник
comment
Попробуйте просто [x,y,z]=size(image). Поскольку image является трехмерным массивом, разрешая только два выхода из size, вы заставляете его сделать y равным произведению 2-го и 3-го измерений.   -  person David    schedule 02.05.2016
comment
спасибо @David. Это имеет смысл.   -  person mee mee    schedule 02.05.2016


Ответы (1)


Это потому, что у вас есть изображение RGB (т.е. 3 канала в третьем измерении). Когда вы явно запрашиваете два вывода из size, он возвращает количество строк для первого вывода и количество столбцов, умноженное на размер третьего измерения (284 x 3) как второй вывод.

Если вам нужны истинные размеры вашего RGB-изображения, вам нужно указать три выхода для размера.

[nRows, nColumns, nChannels] = size(image);

В качестве альтернативы вы можете запросить один вывод из size, и он даст массив размеров, где каждый элемент соответствует размеру в этом измерении.

sz = size(image);
%// 177   284   3

Или используйте второй входной аргумент, чтобы явно указать интересующее вас измерение.

nRows = size(image, 1);
nColumns = size(image, 2);
person Suever    schedule 02.05.2016