gpt4 book ai didi

image - MATLAB 中的涟漪效应

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:25 24 4
gpt4 key购买 nike

我想编写一个函数 newim = rippleim(im) 获取一张图像并返回一张带有涟漪效果的新图像。

我想计算所有点到 (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);

我得到了,

enter image description here

通过归一化为[0 1],它变得更好了,

enter image description here

还是不太对。

我什至用谷歌搜索并在 python 中发现了一些类似的案例 here ,关于动画。但我只想要一个固定的效果。

Q1如何提高效果?

Q2 如何将其应用于现有图像?

谢谢,

最佳答案

关于你的第一部分问题,与其通过反复试验找到适合你口味的函数,我建议你手动创建一个你心目中的查找表“函数”,然后拟合一个的高阶多项式。

关于您的第二部分,我猜您所说的应用是指将其用作 mask 。在这种情况下,您可以简单地将波纹效果的标准化版本乘以您的图像:

imp = double(imread('peppers.png'));
n = size(imp,1);
m = size(imp,2);
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;
mask = cos(.05*d) .* exp(-.005*d);
im = (mask-min(mask(:)))./ ( max(mask(:))-min(mask(:)));
I = bsxfun(@times,im,imp);
imshow(I/255);

enter image description here

关于image - MATLAB 中的涟漪效应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com