2016-03-04 131 views
1

我正在嘗試使用Matlab創建一個徑向漸變圖像,如下所示。圖像需要大小爲640 * 640 * 3,因爲我必須將其與另一個該尺寸的圖像混合。我寫了下面的代碼,但打印出來的圖像只是黑色背景上的一個灰色圓圈,邊緣沒有任何衰減。Matlab徑向漸變圖像

p = zeros(640,640,3); 
for i=1:640 
    for j=1:640 
     d = sqrt((i-320)^2+(j-320)^2); 
     if d < 640/3 
      p(i,j,:) = .5; 
     elseif d > 1280/3 
      p(i,j,:) = 0; 
     else 
      p(i,j,:) = (1 + cos(3*pi)*(d-640/3))/4; 
     end 
    end 
end 
imshow(p); 

radial gradient image

任何幫助,因爲我是新來的Matlab的不勝感激。

回答

0

變化:

p(i,j,:) = (1 + cos(3*pi)*(d-640/3))/4; 

p(i,j,:) = .5-((.5-0)*(d-640/3)/(640/3)) ; 

這是線性內插,其中,來自所述內緣的灰度值線性下降到背景的一個例子。

你可以嘗試其他方程有不同種類的梯度衰落!

+0

非常感謝! –

0

如果你仔細看看你的第三種情況(其中的方式應該是別人而不是ELSEIF簡單),你可以看到你有

= (1 + cos(3*pi))*... 

由於COS(3 * PI)= - 1,這將始終爲0,從而使該範圍內的所有像素變黑。我認爲你會想在那裏有一個「d」。

+0

那裏的代碼有錯誤。它的意思是 'p(i,j,:) =(1 + cos(3 * pi)*(d-640/3))/ 4;'@ rasan076 –