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

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

我想,也许还有一些微妙规律,没有注意到。

请别以为我爱钻牛角尖啊!

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 16:00 发表
又一个怪问题!弄得头大了。
老大,那里位于选区之外!,保持原样不会有任何变化!

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 16:00 发表
又一个怪问题!弄得头大了。
是在大的外接矩形里面,但是你没选中它啊,它怎么会有任何的变化呢?选区的作用是什么?就是选区内外之间的独立性啊!
也就是说你的任何操作绝对不会影响到选区外的那部分。这最基本的问题你怎么忘了呢!

图层也是一样,不同图层之间的数据也是独立的,你对某个图层的操作,绝对不会影响到其他图层中得数据。

TOP

等过一会,我做一些图解释一下精确置换图的“放大”和“缩小”效应。

TOP

引用:
原帖由 hoodlum1980 于 2006-4-25 16:12 发表

老大,那里位于选区之外!,保持原样不会有任何变化!
小选区-我人为的指定置换范围。小外接矩形-ps指定的“处理”范围?

大选区-ps指定的“处理”范围。大外接矩形-ps指定的“处理”范围。(置换图(控制图)。左上部,向右复制像素。)

它们之间的关系怎样?现在糊涂了。把我搞晕了!哈哈。


.

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

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 16:18 发表


小选区-小外接矩形

大选区-大外接矩形

它们之间的关系怎样?现在糊涂了。把我弄晕了!哈哈。
我这里,没有“小外接矩形”的概念,也没有小选区的概念,可能一个选区是来自于多个选区的叠加,这种情况我们做选区的时候会经常遇到。呵呵,这个问题需要你慢慢在回味回味。当年发这个帖子的时候,我还没开始从算法角度去思考,和你一样,是从自己的感知去寻找规律。后面的话我对置换绿境的描述主要建立在算法角度上的描述。所以相对而言,反过来再看从前的一些描述,自己倒是有些冷汗,因为当初自认为把握较大的论述,其实有些地方的表达可能不够精确,所以这个帖子我好像是编辑过得,还好应该大多还没有追究到这些细节地步。

TOP

引用:
原帖由 hoodlum1980 于 2006-4-25 16:28 发表

我这里,没有“小外接矩形”的概念,也没有小选区的概念,可能一个选区是来自于多个选区的叠加,这种情况我们做选区的时候会经常遇到。呵呵,这个问题需要你慢慢在回味回味。当年发这个帖子的时候,我还没开始从 ...
如果没有“小外接矩形”的概念,也没有小选区的概念。那就更不好理解了。如#72,#74楼的结果图。

能得到你及时的答复,算是我的最大幸运!从你的论述,使我逐渐地认识了置换的真实原理。有些地方理解得还很不够,也许还需要一个渐进的过程。

谢谢你啊!


.

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

TOP

引用:
原帖由 sunshijiu 于 2006-4-25 16:39 发表



如果没有“小外接矩形”的概念,也没有小选区的概念。那就更不好理解了。如#72,#74楼的结果图。

能得到你及时的答复,算是我的最大幸运!从你的论述,使我逐渐地认识了置换的真实原理。有些地方理解得还 ...
这个很好解释啊,关键是你的认识没有扭转过来,对处理过程没能正确理解。首先,对于任何绿境来说,处理结果都仅仅处理在选区内的部分。对于置换滤镜同样如此。那么,处理时,就存在一个对每个需要处理的象素,都要在置换图上找到一个和它位置对应的象素,显然,直接被你选中的置换图是不能保证能够完全覆盖到你的所有待处理的象素的,因此就有一个伸展或拼贴的过程,这一步就保证了对于你选中的任何一个象素,都能在置换图上找到一个对应的象素,这个象素的R和G值将会参与到该象素的计算中去。那么,所有选中的象素而言,如何能在置换图上找到一个唯一对应该位置的象素呢?这就引入了选区外接矩形的概念,试想,如果不外接,超出外接矩形边界当然未尝不可,但是这显然没有必要也无法确定如何去对应,会失去结果的唯一确定性。如果小于外接矩形,那么势必位于外面的点无从计算,因为找不到一个点给它指明偏移量。

这样最后,对每个选区内的点,都能够计算出结果。而选区外的那部分象素,根本不会被处理。这样分清楚这个处理过程之间的关系,则处理结果的来源就一幕了然,很清晰了。

TOP

引用:
原帖由 hoodlum1980 于 2006-4-25 17:33 发表


这个很好解释啊,关键是你的认识没有扭转过来,对处理过程没能正确理解。首先,对于任何绿境来说,处理结果都仅仅处理在选区内的部分。对于置换滤镜同样如此。那么,处理时,就存在一个对每个需要处理的象素, ...
谢谢你如此耐心、细致地解释。谢谢!


.

TOP

一下子出现这么多的回复呀。
本来以为有些清晰的概念又被弄糊涂了,觉得又什么都不懂了。

我看了半天也不敢确定你们说得是不是这个意思:
选区之外外接矩形之内的像素可以提供源像素素材。
但是选区之外外接矩形之内像素本身不参加置换。

TOP

这是使用精确置换图置换的结果,为了方便验证结果,使用的原图也是256×256象素,因此伸展和拼贴选项没有区别(当然这里原图不必一定要这个尺寸)。原本在100%比例下,所有的反向查找矢量的终点都会汇聚于中心点那个象素上。现在当使用50%的比例时,所有反向查找矢量的长度都被缩减为原来的一半,因此将落入中心区域的128×128象素的矩形。在下图中,我画出了原图的四个角上的反向查找矢量,就是红色的箭头。可以这样去设想,将反向查找矢量的红色箭头比喻为一个钓鱼线,末端的箭头比喻为一个钩子,原图绘制在一个具有弹性的画布上,此时,将线收紧之后,就把被勾住的那4个角拉伸到原图大小的位置之上。因此,相当于将图中中心的128×128区域贴到256×256区域,即有放大效果。这里的矢量全部落入原图内部,不存在未定义区域,因此那个重复边缘象素和折回是无所谓的。

[ 本帖最后由 hoodlum1980 于 2006-5-28 18:20 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

引用:
原帖由 千里独行 于 2006-4-25 17:55 发表
一下子出现这么多的回复呀。
本来以为有些清晰的概念又被弄糊涂了,觉得又什么都不懂了。

我看了半天也不敢确定你们说得是不是这个意思:
选区之外外接矩形之内的像素可以提供源像素素材。
但是选区之外外接 ...
我理解。是这个意思。

.

TOP

下面这里在此给出精确置换图的说明。该图的生成语句,见我在新手区的《置换滤镜写字》一贴有。这里只画出了4个顶点处的反向查找矢量。注意这是反向查找矢量。这个定义是我自己为了区分感观认识的而叫的。(感观上白色的地方向左上扭曲,而该查找矢量的方向和感观认识方向相反)。
在这里附加说明一点:置换图的第三个通道是不参与计算的,如果只有一个通道(灰度图),则两个方向都使用该通道的数据。因此,我的某些例子中会在蓝色通道中添加一些文字等标志信息。我这里的篮通道设置为白色(255)。实际上观察置换图时,要观察的是置换图的R和G通道的灰度变化。

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

TOP

下面这个图展示了,在水平比例设置为150%时,本来以中心点为重点的水平方向的反向矢量将会全部越过中心点。为了方便看清矢量,这里垂直方向上我没有越过中心点,依然选择50%。如果水平和垂直比例都是150%,结果图就是倒置放大的成像效果。如果水平和垂直比例都选为200%,那么置换结果将是原图的“无缩放”翻转。置换比例超过200%以后,将进入“翻转缩小”区。
因此,成像规律是:

比例:       置换结果
————————————————
-999%~0:   正向,缩小
0:         正向,等比例
0~100%:    正向,放大
100%:       被原图中心象素填充
100%~200%:  反向,放大
200%:      反向,等比例
200%~999%: 反向,缩小

——————————————————
令补充一下:当比例x大于200%时,缩小比例和-(x-200)%的缩放比例相同,但方向相反。例如,+300%和-100%的缩小比例等同,但是二者的结果是方向相反的。

很容易的,我们可以联想对比一下焦距为f的凸透镜的成像规律:(1/物体距离+1/像距离=1/f)
到透镜距离:       成像结果             像的位置
————————————————————————
0~f:        虚像,正立,放大             同侧
f:         无法成像               
f~2f:       实像,倒立,放大             异侧,2f~无穷远
2f:         实像,倒立,等比例           异侧,2f
2f到无穷远:实像,倒立,缩小             异侧,f~2f
————————————————————————————————
(还有与此凸透镜成像规律类似的是凹面镜,只不过前者折射,后者反射)
这里可以看到非常类似,焦距f对应了100%比例。平行光被凸透镜折射后将汇聚于焦点,对于精确置换图,所有反向查找矢量都指向中心点。假如用一束平行光在某一侧照射凸透镜(比如把凸透镜放在太阳光下),在透镜的另一侧紧贴透镜放一块白板,这时逐渐移动该白板,就会发现白板位于小于f距离时,是正向的圆形光圈,当移动到焦点上时,汇聚为一个两点。当白板移动到更远时,会形成一个反向的圆形光圈,并且越来越大。这里,移动白板就相当于置换中的从0开始逐渐增大某方向比例,随着该比例的增大,所有反向查找矢量将先汇聚在一个正向的小矩形内,然后该矩形逐渐缩小,到100%比例时汇聚于中心点,再然后将超越中心点,汇聚于一个反向的矩形,随着比例递增,该反向矩形逐渐放大。

图中,我依然画出四个角上的反向查找矢量。可以想象,一下,当该四个箭头的长度被收缩为0,图中央中的矩形部分被拉伸到原图范围上,就是结果图。

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

TOP

真有意思!

[ 本帖最后由 sunshijiu 于 2006-4-27 17:40 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

真有意思!

[ 本帖最后由 sunshijiu 于 2006-4-27 17:43 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

以上两种结果都是放大效应,那么如何缩小呢,在GDI+中没有直接对位图缩放的函数支持,这个功能是通过DrawImage函数实现的,当你指定一个源矩形,一个目标矩形,就会把源图的位于指定矩形内的部分“贴”到指定的目标矩形上。同样的道理,我们通过置换图制定把原图贴到一个比他原有尺寸小的区域内,就是“缩小”效果。因此,这里我们将置换比例改为负数,则最终的所有反向查找比例的方向统统改变为背离中心点方向。这时就相当于设定源矩形为原图大小,图中的红色框就是目的矩形。这时图中的四个红色箭头不再是四个顶点位置的,而是4个位于距离边缘56象素距离的4点上的反向查找矢量。这4点的反向查找矢量在+100%比例的条件下,本来是指向中心点的,现在改为-100%比例以后,就指向了原图的4个顶点。在图中的128×128红色方框以外,反向查找矢量将跃出原图边界,因此该方框的外围部分都是未定义区域,这里我选择了折回方式,在之前我已经说明过该种方式,相当于把原图向四周无限拼贴扩展成一个无限大的平面,然后不管反向查找矢量有多么长,就都能得到已知点。在这个图的结果中可以清楚的反映这个论述。当然,如果选择重复边缘象素,那里就是一些被拉伸的线状象素,这些象素都来自于原图的边缘上的象素。

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

TOP

真有意思!

[ 本帖最后由 sunshijiu 于 2006-4-27 17:44 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

真有意思!

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

TOP

引用:
原帖由 千里独行 于 2006-4-25 17:55 发表
一下子出现这么多的回复呀。
本来以为有些清晰的概念又被弄糊涂了,觉得又什么都不懂了。

我看了半天也不敢确定你们说得是不是这个意思:
选区之外外接矩形之内的像素可以提供源像素素材。
但是选区之外外接 ...
这里的概念其实非常的清楚,不会糊涂,但需要仔细琢磨。

1:“选区之外外接矩形之内的像素可以提供源像素素材。”
按我的理解,您的第一句话准确。就是这样。

2:但是选区之外外接矩形之内不参与置换。

您的第二句话也正确,但是没有必要提这句话,因为它容易将你绕晕。这句话的道理非常的简单,选区外的象素如果变化了,被处理了,那才叫见鬼了呢!如果这样相信大家都不会干的,呵呵,如果选区外的象素得不到“保护”,你要删要改大家一起来,能行吗?选区不是形同虚设了?你做选区是为了什么呀?

TOP

发新话题