2017-09-30 10 views
0

ガンマ関数を画像に適用するコードを記述しようとしています。imshowは同じ画像を複数回表示します

Original Image:私の理解で

Original Image

(と私は間違っていないよ願っています)、あなたはピクセルを取得し、一定値まで上げます。この場合、私は0.5を選択しました(1より小さい値でなければなりません)。

与え
memorial_image = hdrread('hw1_memorial.hdr'); 
[M, N] = size(memorial_image); 

for i = 1:M 
    for j= 1:N 
     new_image(i,j) = memorial_image(i,j)^0.5; 
    end 
end 

imshow(new_image) 

New image - result of the code above

をので、問題は、私は、ユーザーに画像を表示しようとすると、それはないです

私が書いたコードを下に貼り付けられます1つの画像のみを表示しますが、この場合は3つの画像が異なるトーンで表示されます。それはなぜ起こるのですか?

+0

画像へのリンクです:[hw1_memorial .hdr - Dropbox](https://www.dropbox.com/s/eel6rkqdndtb1t2/hw1_memorial.hdr?dl=0) – Gabe

答えて

0

これは、memorial_imageまたは'hw1_memorial.hdr'がRGBを表す3次元であるためです。 [M, N] = size(memorial_image);を使用すると、3番目の次元に2番目の次元が乗算されます。理解するために、この小さな例を見てみましょう:

>> a= rand(2,2,3); 

>> size(a)  
ans =  
    2  2  3 

>> [m n]=size(a)  
m =  
    2 

n =  
    6 

ところで、あなたのコードは、ように、1行にベクトル化して書き込むことができます:ここで要求されたよう

new_image = memorial_image .^ 0.5; 
関連する問題