在matlab中获取图像的中心像素
Get center pixels of image in matlab
我想提取图像的 (p*hight,p*width,3)
大小的矩形区域。 p 是 [0,1].
之间的双精度值
下面的代码有效,但我想知道是否有更好的方法来实现这个?
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 命令可以得到相同的结果?也许只指定矩形的大小和图像中心?
如果您有 Image Processing toolbox, you could use the imcrop 函数和一些数学运算:
[nl, nc, ~] = size(img);
CenterPixels = imcrop(img, [[nc nl] * (1 - p) / 2 [nc nl] * p]);
编辑: 或者你可以这样做:
[nl, nc, ~] = size(img);
CenterPixels = img(nl*(1-p)/2:nl*(1+p)/2, nc*(1-p)/2:nc*(1+p)/2, :);
我想提取图像的 (p*hight,p*width,3)
大小的矩形区域。 p 是 [0,1].
下面的代码有效,但我想知道是否有更好的方法来实现这个?
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 命令可以得到相同的结果?也许只指定矩形的大小和图像中心?
如果您有 Image Processing toolbox, you could use the imcrop 函数和一些数学运算:
[nl, nc, ~] = size(img);
CenterPixels = imcrop(img, [[nc nl] * (1 - p) / 2 [nc nl] * p]);
编辑: 或者你可以这样做:
[nl, nc, ~] = size(img);
CenterPixels = img(nl*(1-p)/2:nl*(1+p)/2, nc*(1-p)/2:nc*(1+p)/2, :);