我想編寫一個函數newim = rippleim(im)
,它會拍攝一張圖像並返回一個帶有漣漪效應的新圖像。MATLAB中的紋波效應
我認爲計算從(p,q)
所有點的距離,然後乘以sin(d).*exp(-d)
會產生衰落波的良好效果。
n = 800;
m = 800;
im = zeros(n,m,3);
p = [round(m*.5) round(n*.5)];
[x y] = meshgrid(1:m,1:n);
x = x - p(1,1);
y = y - p(1,2);
d = (x .^2 + y .^2).^.5;
R = cos(.05*d) .* exp(-.005*d);
G = cos(.05*d) .* exp(-.005*d);
B = cos(.05*d) .* exp(-.005*d);
im = cat(3,R,G,B);
imshow(im);
而且我得到了,
與正常化[0 1]
,它有一個好一點的,
它仍然看起來不正確。
我甚至在Google上搜索了一些類似的案例python here,關於動畫。但我只想要一個固定的效果。
Q1如何提高效果?
Q2如何將它應用於現有圖像?
感謝,
+1 - 很不錯的! – rayryeng
謝謝。有關效果的任何建議?一些比「sin * exp」更能給出自然結果的公式?再次感謝。 – Rashid
@Kamtal,查看更新回答 –