高分求图像边缘晕影效果....

mdejtod 2009-03-19 07:17:00
RT....就是在图像的边缘上,蒙上一层渐变半透明的颜色...
...全文
956 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzhifei 2009-03-30
  • 打赏
  • 举报
回复
已发送,请接收
数字蛋糕 2009-03-29
  • 打赏
  • 举报
回复
当d <r 的时候,强制设定f(d)=1,这样就不会有r以外(内)的图像被改变的可能了。
mdejtod 2009-03-27
  • 打赏
  • 举报
回复
现在可以了,是我自己看错了,关键是不懂怎么画一个椭圆形的渐变,还有就是,影响到了除半径R之外的地方,就是整个图片的每个像素点都被改变了
数字蛋糕 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 mdejtod 的回复:]
to :
数字蛋糕
你好,我试了下,采用你的方法可以做到暗角。但是图片上其它没有暗角的像素点颜色被改变了,还有就是,中心处是一个矩形的形状,我试着调整了一下光晕宽度r,好像无法移动中心点位置呢。。。
[/Quote]
如果你还想调整光晕中心,那就把d和D重新定义一下吧:P
mdejtod 2009-03-27
  • 打赏
  • 举报
回复
谢谢兄弟,
mdejtoz@163.com
xzhifei 2009-03-27
  • 打赏
  • 举报
回复
留一个EMail,我给你源码
mdejtod 2009-03-27
  • 打赏
  • 举报
回复
to :
数字蛋糕
你好,我试了下,采用你的方法可以做到暗角。但是图片上其它没有暗角的像素点颜色被改变了,还有就是,中心处是一个矩形的形状,我试着调整了一下光晕宽度r,好像无法移动中心点位置呢。。。
mdejtod 2009-03-27
  • 打赏
  • 举报
回复
谢谢,我试一下!!
数字蛋糕 2009-03-26
  • 打赏
  • 举报
回复
我再详细的解释一下相关的等式(直接考虑楼主需要的矩形暗角,并略作了简化):

p'(x,y) = A * p(x,y)
其中衰减因数 A = f(d) * d/D;

p'(x,y)是加工后的像素值;
p(x,y)是当前像素值;
f(d)后面再说,先当它不存在;
D是Min(W/2,H/2);
W、H分别是图像的宽度和高度;
d是像素点离最近边的距离d=Min(W/2-|x-W/2|, H/2-|y-H/2|)。

有了这个之后,你算出每个点的衰减因数,再通过Scanline取得每点的RGB,分别自乘A就得出一幅自中心往外逐渐变暗的图像了。

之所以引入衰减特性f(d),是为了让图像正中有一大块不受衰减影响的正常区域,让渐变从某一指定半径(假定渐变起点和图片边沿距离,也就是所谓的光晕宽度为r,且r<D)开始。
则有:f(d) = 1 (当d>=r) 或 d/r (当d<r)

再多说一点,为了使渐变有不同的观感,当d<r的时候不一定使用如上头的线性衰减,可以试试具有凹凸观感的衰减函数,
例如:f(d) = (d/r)^2 (凹感) 或者 f(d) = (d/r)^(0.5) = Sqrt(d/r) (突感)
xzhifei 2009-03-26
  • 打赏
  • 举报
回复
PhotoShop中的模糊(Blur)用过没有,把一张图片模糊一下
mdejtod 2009-03-26
  • 打赏
  • 举报
回复
2.模糊这个MASK,模糊大小根据个人喜好;
3.根据这个MASK的模糊值换算到原始图上,加上晕影色,合成为晕影图片。

模糊是什么样的概念?
xzhifei 2009-03-26
  • 打赏
  • 举报
回复
1,按原始尺寸缩小取得一张Mask,如100*100的图,为了达到晕影的效果,Mask就取80*80;
2.模糊这个MASK,模糊大小根据个人喜好;
3.根据这个MASK的模糊值换算到原始图上,加上晕影色,合成为晕影图片。

其实晕影就是羽化效果
mdejtod 2009-03-26
  • 打赏
  • 举报
回复
楼上的兄弟,能否说下大概思路?
xzhifei 2009-03-26
  • 打赏
  • 举报
回复
这没有什么难的,我早就实现了此类功能,没用什么数学,只是用了一些小技巧就完成了。
只是手头上没有代码
genispan 2009-03-26
  • 打赏
  • 举报
回复
顶 +学习
mdejtod 2009-03-21
  • 打赏
  • 举报
回复
to
cybercake :
要的正是图像加上暗角的效果和由边框向中央蒙上一层半透明的色彩渐变的效果(就是光影魔术手里面的晕影图片效果),可是我数学太差了,最主要的是不懂算这个光晕渐变控制函数,
望兄弟不吝指教!!!!我会专门开贴给你分作为回报!!!!
ahjoe 2009-03-21
  • 打赏
  • 举报
回复
楼主要的是边框模糊。
数字蛋糕 2009-03-21
  • 打赏
  • 举报
回复
不明白楼主说的是什么效果,给个例图行么?

如果你说的是光影魔术手的给图像加上暗角,那么就很简单。

首先我假定你知道ScanLine怎么用。那么你对所有的点做一个循环,然后将接近边缘的像素弄暗。

比如 p'(x,y) = p(x,y) * f(d) * (D - d) / D

其中d是该点距离图像中心的距离,D是点(0,0)距离图像中心的距离,f是光晕渐变控制函数(也就是控制光晕大小),你可以自己选择值域在[0,1]间的指数型或抛物线型的函数作为渐变风格。

如上面的方法画出来的是圆形的光晕,如果你在使用d的时候不用空间距离,而是归一化的坐标和(d = |x - W/2|/(W/2) + |y - H/2|/(H/2)),那么得出来的就是矩形的光晕。

必要的时候(尤其当f(d)的值域超出[0,1]的时候),需要对等式右边进行饱和处理。
xiaocha 2009-03-20
  • 打赏
  • 举报
回复
1 先锐化,突出边缘
2 设定阀值,二值化,确定边缘
3 是边缘的点,对原图作alpha叠加(颜色叠加)

具体算法,图像处理的书中都有。

边缘的确定与图片太有关系了,不能保证总有好的效果,除非图片很简单。
阀值的设定也有很大的影响,对于复杂的图像可以按区域设定多个阀值。

如果想自动确定阀值,需要对锐化后图像的进行统计分析,
简单的图像可以,复杂的图像比较麻烦,效果也不一定好。
ljluck7687 2009-03-20
  • 打赏
  • 举报
回复
本人也想知道这个算法,占位
加载更多回复(4)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧