画像の全体サイズを変​更せずに画像中の一部​分のみを縮小する方法

14 ビュー (過去 30 日間)
金子 夏実
金子 夏実 2021 年 7 月 30 日
コメント済み: 金子 夏実 2021 年 7 月 31 日
初歩的な質問で申し訳ありません。画像全体のサイズを変更せずに、画像中に含まれるオブジェクトのサイズのみを変更したいです。重複した説明になってしまい申し訳ないのですがたとえばこのような画像において全体のサイズ変更せずにりんごの大きさだけを縮小したいと考えております。実際の画像はグレースケール画像になっております。よろしくお願いいたします。

採用された回答

Hernia Baby
Hernia Baby 2021 年 7 月 30 日
編集済み: Hernia Baby 2021 年 7 月 30 日
境界部分を切り取ってサイズ変更します。
画像を読み込み灰色にします。
a = imread("apple.jpeg");
a = rgb2gray(a);
imshow(a);
同じサイズの画像bを作っておきます
b = a;
b(:,:)=0;
閾値を決めて抜き出します
(このときサイズ変更してるので画像も粗いです)
a(a>230)=nan;
a = imresize(a,0.4);
imshow(a);
貼り付けます(背景を少しグレーにします)
[x,y]=size(a);
b(1:x,1:y) = a;
b(b<5)=240;
imshow(b);
  1 件のコメント
金子 夏実
金子 夏実 2021 年 7 月 30 日
ご回答ありがとうございます。大変わかりやすく書いていただいたことで、理解が深まりました。imresizeのみを使用すると画像のサイズごと小さくなってしまうためとても困っておりました。自分だけでは貼り付けるという考えに至らず、回答を見て感銘を受けました。これからも精進していきたいと思います。この度はありがとうございました。

サインインしてコメントする。

その他の回答 (1 件)

Atsushi Ueno
Atsushi Ueno 2021 年 7 月 30 日
編集済み: Atsushi Ueno 2021 年 7 月 31 日
org = rgb2gray(imread('apple.jpeg')); % 以下括弧内はImage Processing Toolboxの対応関数
WB = org < 253; % 二値化する(imbinarize)
new = org(any(WB,2),any(WB,1)); % 余白を除く(imcrop)
new = imresize_wo_toolbox(new, 0.5); % 拡大・縮小(imresize)
org(:) = 255; % 元画像を白紙にする
left_top = (size(org) - size(new))./ 2;
org(left_top(1):(left_top(1)+size(new,1)-1), ... % 縮小オブジェクトを元画像の中央に貼付
left_top(2):(left_top(2)+size(new,2)-1)) = new;
imshow(org);
function Ii = imresize_wo_toolbox(I, ratio) % Image Processing Toolbox無しのimresize
[m,n] = size(I);
sz = round(size(I).*ratio,0);
[X,Y] = meshgrid(1:n,1:m);
[Xi,Yi] = meshgrid(linspace(1,n,sz(2)),linspace(1,m,sz(1)));
Ii = interp2(X,Y,double(I),Xi,Yi);
end % 詳細(interp2を使う)は下記のMATLAB Answers等を参照
  3 件のコメント
Atsushi Ueno
Atsushi Ueno 2021 年 7 月 31 日
論理notは不要だったのでanyに変更し、変数名等を整理しました。
この回答はImage Processing Toolbox無しでも動作します。
金子 夏実
金子 夏実 2021 年 7 月 31 日
ありがとうございます!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImage Processing Toolbox についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!