Я хочу извлечь прямоугольную область размером (p*hight,p*width,3)
изображения. p - двойное значение между [0,1].Получить центральные пиксели изображения в matlab
Этот код работает, но я хотел бы знать, есть ли лучший способ достичь этого?
img = imread(ImageName);
% size parameter
p = 0.5;
% store image size
hight = size(img,1);
width = size(img,2);
% calculate the center of the image both in width and hight
% used as reference
centerHight = floor(hight/2);
centerWidth = floor(width/2);
% use half of the actual size of the rectangular region
halfHight = floor(p*hight/2);
halfWidth = floor(p*width/2);
% start index for hight and width
startHight = 1 + centerHight - halfHight;
startWidth = 1 + centerWidth - halfWidth;
% end index for hight and width
endHight = centerHight + halfHight;
endWidth = centerWidth + halfWidth;
% extract center pixels
CenterPixels = img(startHight:endHight,startWidth:endWidth,:);
Есть ли какие-либо команды matlab, чтобы получить тот же результат? Может быть, указав только размер прямоугольника и центра изображения?
из любопытства, что неправильно с тем, что вы предоставили? Даже если у Matlab есть встроенная функция, чтобы делать то, что вы хотите, она, вероятно, не слишком отличается от этого. –
Ничего особенного. Но для меня это казалось большим кодом для «простой» задачи. Просто задавался вопросом, есть ли возможность сделать это с меньшим количеством строк кода. – evolved