设计中国 网站首页   新闻资讯   Photoshop   在线教程   艺术设计   图书   资源下载   会员俱乐部   博客   交流论坛
发新话题
打印

自定义滤镜和置换滤镜的原理

引用:
原帖由 sunshijiu 于 2006-4-24 13:44 发表


如果接受“1像素选区的小矩形-小外接矩形概念”,楼主的大“选区外接矩形”概念就没有引入的必要了。

楼主宏观的大“选区外接矩形”概念,正是你所提问的“困惑”。

不知我的理解与你的提问是否一致?
...
我还不是很理解你说得是什么。至于计算时,当然是逐个象素依次计算的。但是计算到某个象素时,就要确定该象素取自何处,这里就会存在已知和未知区域的问题。实际上任何原始图片都是矩形形状,矩形的边缘是好确定的,而选区边缘是不好确定的,尤其是有羽化的概念。如果按选区形状确定已知区域,则超出选区的位置确定边缘象素或者折回到选区之内,这种想法很难解释的通。从实现角度上,也要远远比外接矩形作为已知区域的难度大的多的多,复杂的多的多。所以,将外接矩形作为已知区域。处于这个矩形内,都是从源图上去复制该象素的。处于该矩形之外,则会在复制该矩形的边缘上的象素或者折回该矩形之内。

从我的理解上,是这样的过程,对该选区求出外接矩形(GetBorderRect),然后将置换图伸展或者拼贴在该外接矩形上,伸展时,只用一次贴图即可完成。拼贴时,可以求出i=外接矩形宽度/置换图宽度,j=外接矩形高度/置换图高度,然后欠套循环一下,将置换图贴到外接矩形的相应位置上。这时一副和原图外接矩形一一对应的图就做好了,然后再对选区内的象素一一进行计算即可。所有结果象素的来源都位于源图的该外接矩形区域之内。

TOP

当把一个绝对的选区(从0到1没有过渡)用羽化时,实际上是在建立了一个宽的0~1的过渡带,以原来选区边界为中心,相两边扩展。羽化后的选区包括了所有大于0的部分,所以实际上羽化后对选区有“外括”作用。在该外括的选区上进行结果的计算,计算后再用结果象素和下面的图层进行类似透明度的比例合成。。例如,对上面的精确置换图,保持伸展状态,对256×256的选区内容,100%比例进行置换,将用中心点填满该选区,如果进行了羽化,再进行相同步骤的置换,就会看到结果有放大效应,这是由于羽化将原选区向外扩展导致的。

TOP

下面是简单的图片说明。选区是绿色的部分,选区的外接矩形就是红色的方框。将置换图从左上角开始,拼贴到该外接矩形上直到贴满,就做出了一个和外接矩形的象素能一一对应的一副图片(这和ps中的填充图案方法一样),拼贴后超出的部分当然是不会用到了。注意,这副图片和原图之间的象素位置存在一一对应(在伸展和拼贴之前,是无法保障置换图能和原图一一对应这一点的),当计算时,就根据这副图中的相同位置象素的R和G值,分别算出一个偏移距离(象素为单位),根据该偏移距离,可以到源图上确定该点,如果该点落入外接矩形之内,为已知,直接复制过来即可。如果位于外接矩形之外,为未定义区,则需要咨询用户的选择是重复边缘象素(repeat edge pixel)还是折回来确定,这两种方式都会确定外接矩形内的某一个象素。。

[ 本帖最后由 hoodlum1980 于 2006-4-30 01:54 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

引用:
原帖由 联盟论坛1 于 2006-4-24 10:58 发表
外接矩形的概念我能明白,看的多了,也就能想像出来.千里朋友的发问,我感觉应该多看下楼主的贴子,或许就明白多了.我个人认为,超出外接矩形的部分才能算是未定义区域,那么个接矩形内都是已定义区域,置换就会先从已定 ...
没错,个人认为你的表述正确,和我的理解完全相同。也就是说未定义区域,指的是外接矩形之外的部分。外接矩形之内,为已知区域。

TOP

引用:
原帖由 炼金术士 于 2005-6-29 19:43 发表
傻子的想法是S里一般同一效果总有不同的方法可以做到,那么这外置换的效果能不能用别的来代替呢?偶看过懵懂斋的书,里边也讲了置换,但我实在看不懂
在某些场合上,液化工具和置换可达到相似作用。但液化毕竟还是依赖画笔操作。因此某些比较特殊的置换图做的扭曲特性依然暂时难以替代。

最后补充说明:
1。如果原图无灰度变化,是同样的颜色,那置换无意义。如果置换图无灰度变化,是同样的颜色,那是平移,也无什么意义。
2。ps基于二维平面的,置换不能或者基本不能产生三维立体感的效果。通常这需要三维处理。

[ 本帖最后由 hoodlum1980 于 2006-4-25 13:16 编辑 ]

TOP

引用:
原帖由 hoodlum1980 于 2006-4-24 18:18 发表


我还不是很理解你说得是什么。至于计算时,当然是逐个象素依次计算的。但是计算到某个象素时,就要确定该象素取自何处,这里就会存在已知和未知区域的问题。实际上任何原始图片都是矩形形状,矩形的边缘是好确 ...
根据观察到的现象,对外接矩形的概念,提出来讨论一下。

我的理解:

1.“1像素选区的小矩形-小外接矩形概念”,是针对“计算”而言的。(有羽化,将按羽化后的像素(或灰阶值)进行计算)

2.“外接矩形的概念”是指:对原图所做的“将被进行置换的选区-每一个分散的小选区的外接矩形”(定义区域)(相反的是未定义区域)而言的。

3.#63楼的示意图,外接矩形是多个小选区的“公共外接矩形”。置换后的结果,我的观察有以下规律:置换仅仅是在“每一个分散的小选区的外接矩形”进行的。且重复边缘像素,是以圆选区的外接矩形的边缘为边缘的。延伸以适合,好象又是以“公共外接矩形”(不是圆选区的外接矩形)为对象的。

联系你所给出的算法,不知这样的理解和认识有没有冲突?

图示意如下:

原图和置换图:选取两个圆,以对圆选区进行置换。置换图的扭曲功能为(水平):/ 。

TOP

置换后的结果图:

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 14:20 发表


根据观察到的现象,对外接矩形的概念,提出来讨论一下。

我的理解:

1.“1像素选区的小矩形-小外接矩形概念”,是针对“计算”而言的。(有羽化,将按羽化后的像素(或灰阶值)进行计算)

2.“外接矩 ...
呵呵,你的描述还是太不容易理解清楚了,,那么试验的结果呢?要把置换的选区,置换图,还有置换中选择的参数和选择都给出。。有一点是确定的,在拼贴的情况下,置换图不会有任何拉伸等变形。但你可以留心注意置换图的位置。尤其是左上角它的起始点位置。

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 14:22 发表
置换后的结果图:
哦,从结果上看,你的选择是拼贴,重复边缘象素。但是你犯的错误在于你用想当然的结论去解释现象。实际上你把它多个独立选区解释为单独的置换过程。这是不正确的,实际上这是一个整体过程,也就是以大的外接矩形作为一个对所有选区的覆盖。

你可以在你上面的例子上做这样的改动,在你的左上角圆形稍微靠左部分选中一个或者少量的象素,在你的右下角圆形的稍微靠右部分选中一个或少量象素。(这样的做法是将外接矩形扩展一些)。这样你会发现结果中的哪些紫色的原点因为能够被大的“已知区域”覆盖,所以属于已定义部分,因此会被复制到圆形之内,而不是被重复边缘象素拉伸成横条状。如果依然是拉伸成条状,说明这里是未定义区域,那你的按单独选区的独立置换可以成立。

TOP

置换的选区:仅选择两个圆(包括边缘)。
置换图:图上已有说明。水平 / 。(上右下左扭曲-推的说法)
置换中选择的参数:水平50%,垂直0%。(选项:重复边缘像素、延伸以适合)。没有选:拼贴。

置换的术语太多,说明也真够困难啊!哈哈!
我已尽力了哟!

谢谢你hoodlum1980!

TOP

再有,边缘象素,指的就是位于选区的外接矩形4条边上的象素,一共(2*宽度+2*高度-4)个。

TOP

右下角我也不能肯定,但是肯定不会有被重复边缘象素的现象。因为多做的选区会把原本的未知区域改为已知的。

TOP

又做了一个:

置换的选区:仅选择两个圆。
置换图:图上已有说明。水平 / 。(上右下左扭曲-推的说法)
置换中选择的参数:水平30%,垂直0%。(选项:重复边缘像素、延伸以适合)。

TOP

置换后的结果图:

TOP

重复边缘像素。作用在圆的外接矩形内。

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 14:20 发表


根据观察到的现象,对外接矩形的概念,提出来讨论一下。

我的理解:

1.“1像素选区的小矩形-小外接矩形概念”,是针对“计算”而言的。(有羽化,将按羽化后的像素(或灰阶值)进行计算)

2.“外接矩 ...
再有,你这个例子据的也不够好。你的未定易区域本身就和大的外接矩形是相同的。,这样怎么能方便得出什么结论呢?你只要把那个渐变的方向反过来,让上面的是白的,下面的是黑的,结果不就一幕了然了么。这样,左上角的圆形是从右边取象素,如果按你的解释,这里是未定亦区,按我的解释,这里就是已定义区。按我的解释,这里就会把紫色的圆形复制过去,按你的解释,这里会出现被拉伸的横条。

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 14:58 发表
置换后的结果图:
这结果看起来很正常,没任何问题。

TOP

引用:
原帖由 hoodlum1980 于 2006-4-25 15:01 发表


再有,你这个例子据的也不够好。你的未定易区域本身就和大的外接矩形是相同的。,这样怎么能方便得出什么结论呢?你只要把那个渐变的方向反过来,让上面的是白的,下面的是黑的,结果不就一幕了然了么。这样, ...
你说的:“你的未定易区域本身就和大的外接矩形是相同的”有道理。我看见了!谢谢!

[ 本帖最后由 sunshijiu 于 2006-4-25 15:24 编辑 ]

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 15:22 发表


你说的:“你的未定易区域本身就和大的外接矩形是相同的”有道理。我看见了!谢谢!
对亚,我就是这个意思,你看,左上角它这里是从右边复制象素,按你的解释,这里超出了圆形选区的范围就是未定义了,实际上按我的解释,它是落在大的外接矩形里面的,因此是已知的,所以就是复制右边的那里的象素。

TOP

又一个怪问题!弄得头大了。

[ 本帖最后由 sunshijiu 于 2006-4-25 16:06 编辑 ]

TOP

发新话题