0

バイナリ イメージ lu があり、イメージを回転するとイメージ lu のサイズが変わりますが、イメージのサイズを保持する必要があります。

m=2048;
n=3072;
ODcenter =1.0e+03 *[2.0345    0.9985]
OD=ODcenter ;
X=zeros(m,n); %% m,n is size of image
t = 0:.1:2*pi;
ODradius = norm(ODcenter(2) - ODcenter(1)) / 2;
xm2 = round(2*ODradius*cos(t)+OD(1));
ym2 = round(2*ODradius*sin(t)+OD(2));



 imCircleAlphaData2 = roipoly(X,xm2,ym2);
 figure; imshow(imCircleAlphaData2);
 lu=imCircleAlphaData2;

mask1 = true(size(lu));  %# Create a matrix of true values the same size

mask1(ODcenter(2):end,:) = false;   %# Set the lower half to false
lu(~mask1) = 0;  %# Set all elements in lu corresponding to mask 1==0

mask2 = true(size(lu));
mask2(:,ODcenter(1):end) = false;   %# Set the right of the upper half to false
lu(~mask2) = 0;  %# Set all elements in lu corresponding mask 2==0
figure;
imshow(lu); % shows left upper

lurot= imrotate(lu,45);
 figure,imshow(lurot)

lurot と lu は サイズ が 違い ます . 回転後に画像の一部がトリミングされる場合でも、画像のサイズを維持するにはどうすればよいですか

4

1 に答える 1

0

基本的に、Matlab には 2 つのオプションがありますimrotate

  • crop出力画像を入力画像と同じサイズにし、回転した画像をトリミングしてフィットさせるために使用します
  • which を使用looseすると、元の回転されたイメージ全体を含むのに十分な大きさの出力イメージが作成されます。通常、これにより、出力画像が入力画像よりも大きくなります。
lurot= imrotate(lu,45,'nearest','crop');
于 2012-10-03T13:13:18.110 に答える