2016-04-07 13 views
1

512X512イメージを363X762イメージにサイズ変更して元のイメージ(サイズ512X512)より大きくしたいと思います。これらの余分なピクセル値は、0〜255の範囲で異なる値でなければなりません。 私は、次のコードを試してみました:matlabを使用して余分なピクセルを追加してイメージのサイズを変更する方法

I=imread('photo.jpg'); %photo.jpg is a 512X512 image 
B=zeros(363,726); 
sizeOfMatrixB=size(B); 
display(sizeOfMatrixB); 
B(1:262144)=I(1:262144); 
imshow(B); 
B(262155:263538)=0; 

をしかし、私は、これは長い一つであり、必要に応じて出力もないと思います。誰もがこれを行うためのより良いコードを私に提案することができます。前もって感謝します。

答えて

1

あなたが持っているコードは実際には理想に近いですが、ハードコードされた値がたくさんあることを除けば、それらは実際にその場で計算されるべきです。 numelを使用して、Bの要素の数を数えることができます。

B = zeros(363, 726); 

%// Assign the first 262144 elements of B to the values in I 
%// all of the rest will remain as 0 
B(1:numel(I)) = I; 

この柔軟性は重要であり、重要性は、実際にあなたの最後の行にタイプミスを経て実証されている:あなたが初期化するのでまた

B(262155:263538)=0; 

%// Should be 
B(262144:263538)=0; 

、あなたが最後にゼロにこれらの余分な割り当てを必要としません。行列は最初はすべて0になる。

側注

あなたが複数の列にわたって列ごとに元の画像データを拡散しているように見えます。私はこれがあなたが望むものではないと推測しています。あなたはたぶんの最初の363行をIの行に入れて、Bに配置するだけです。あなたがゼロ以外の値が他の何かになりたい場合は、代わりにを評価であるためにあなたの行列を初期化することができ

B = zeros(363, 726); 
B(1:size(B, 1), 1:size(I, 2)) = I(1:size(B, 1), :); 

更新

:あなたはこのようことを行うことができます。

value = 2; 
B = zeros(363, 726) + value; 
B(1:numel(I)) = I; 

0から255までのランダムな整数にする場合は、randiを使用して行列を初期化します。

B = randi([0 255], 363, 726); 
B(1:numel(I)) = I; 
+0

ありがとう@suever!しかし、これらの余分なピクセルを、単純にゼロではなく、0〜255の範囲の他の値に変更する方法はありますか?あなたもそれを試してみてください。 – sai

+0

@ lakshmisaiそれを行う方法の例で更新しました。 – Suever

+0

@sueverCan余分なピクセルすべてに対して単一の値ではなく、いくつかのランダムな値を割り当てることができますか?とにかく私はちょうど今それをチェックしました。それは私が必要としている方法で完璧に動作しています。ありがとう、トン:) – sai

関連する問題