利用傅里叶变换公式理解camera raw中的纹理和清晰度的概念(可惜的是camera raw的计算公式应该不会是这个傅里叶变换,只能说类似于这里的效果)

文章探讨了图像处理中的概念,如Adobe官方的图片分解理论,解释了锐化、纹理提升与清晰度调整如何影响图片的高频、中频和低频成分。作者通过数学分析揭示了频率域与空间域之间的关系,以及这些操作如何导致像素值的变化模式。
摘要由CSDN通过智能技术生成

知乎说:在Adobe官方的解释中,就像图片可以分解成彩色通道(如:红绿蓝通道),同样的,图片也可以分解成不同的频率,一张图片可以是由高频,中频和低频组成,例如,锐化的原理就是图片的一种高频控制,而纹理,则是对图片的中频控制。

这句话是真的吗?

锐化我是知道的,图像边缘是空间域中最接近的部分的灰度级的突变,原因之前解释过了,相邻像素点的位置(x,y)改变的时候,把(x,y)用二进制看,那么x和y的高位部分不变,取逆之后是控制频率位置(u,v)的低位不分不变,即是控制在频率值累加的过程中,低频函数值的正负号不变,而高频函数值的正负号改变。

现在这里说纹理提升的意思是中频部分的函数值增大了,如何理解?

首先还是需要把空间域的位置(x,y)二进制的位数分成三个区域,低位区域,中间位区域,高位区域。空间域的高位对应频率域的低位,对应的是清晰度。当把清晰度提高的时候,也就是增大了频率域低位的值ai,而在我的公式中(这只是一维公式,只是做直观的理解),

fj=\sum_{i=0}^{N-1}\delta (fj,ai)*ai*e^{\theta_{i} },ai只是向量的模,肯定是有影响,但是影响多大呢?而且问题是对于灰度级fj的值是增大还是减少呢?其实不清楚。不管这些,可以知道的是在空间域中,影响的值是空间域的高位的像素值,可能变大也可能变小。如果把图像按照中心点分成四个部分,那岂不是只影响第四部分的值了?这感觉不均匀,理解不像是正确的。

如果只是改变二进制位的最高位一个值,确实是这样的。但是如果改变的是高位的区域呢?四部分的划分方式是最高位和低位的划分,但是其实还有次高位的划分,在第一部分中其实还是有次高位的,所以,如果把清晰度的调整理解为是高位区域有多个位数的话,那么提高清晰度的操作,对图像的区域影响是比较均匀的。

现在把图像中的高位区域理解为图像按照大块的方式的分割区域,毕竟二进制区域本来就是一种分割方式,所以清晰度调整的是大块相间的间隔区域中的灰度级,效果可能是同时改变高位区域中的某一位的符号。但是这些分析暂且还没有用。

我之前写过\theta_{i}的计算方式:

计算输入的ai在复平面的转动角度\theta_{i},即是ai*e^{\theta_{i} }。假设N恰好是2次方幂,设长度为m=\log_{2} N。假设下标i的二进制数为x1x2....xm。

\theta_{i} =\sum_{j=1}^{m}(2\pi/2^{j})*xj,当xj=1,是累加进去的,xj=0就没有加。

不管i的二进制位的某个数值是不是0,可以知道的是相位角的大小的影响方式是从频率位置i的低位到高位,低位影响大,高位影响小,所以,空间域的高位区域,对应频率域的低频区域的时候,可以知道的是频率域的低位区域的ai改变,对像相应的空间域的像素值的影响最明显,因为低频区域对相位角旋转方向影响最大。

总结理解清晰度。

所以调整清晰度为负值,这些区域很容易变平缓,而且是最大块的间隔模糊方式。调整清晰度为正值,这些区域很容易增大或减少灰度值,且由于是同时改变符号,其实不改变符号,我写错了,我的本意是同一块内的这些ai的值同时变大或者变小,那就是最大块的间隔区域趋于变暗或者变亮,次大块的间隔区域区域变亮或者变暗(变化趋势和最大块的相反),再次大块的间隔区域区域变暗或者变亮(变化趋势和次大块的相反),所以如果次大块在最大块之内,那么会部分抵消,但是相位角由频率域低位控制,对应空间域高位,所以总体上是最大块的影响程度高(这种总体上我只能说是大致上,实际上不一定,fj要为实数,ai必须是复数,所以具体计算还跟前n个大块的ai有关,也跟符号有关,我只能说一般的情况是由于符号在交变的,所以总体上利于最大块,不利于次大块),前提是这些ai的变化的值是一样的。

同理理解锐化。

所以调整锐化变为负值,最小块的间隔区域最难变平缓,而且是最小块的间隔模糊方式,调整锐化为正值,这些区域最难增大或减少灰度值,且由于是同时改变符号,那就是最小块的间隔区域同时变暗或者变亮。

同理理解纹理。

所以调整纹理变为负值,中等大小块的间隔区域比较容易平缓,而且是最小块的间隔模糊方式,调整纹理为正值,这些区域比较容易增大或减少灰度值,且由于是同时改变符号,那就是中等大小块的间隔区域同时变暗或者变亮。

(注意,这里的图像的二进制位置不是比特位,比特位是图像的灰度级,二进制位置是图像的大小,一个宽度为1024像素的图像有10位,平均低中高位区域为平均至少3个位置吧,在图像中这样的低位区域大约有1024/2+1024/4+1024/8个(没有考虑重合部分),中位区域大约为1024/16+1024/32+1024/64+1024/128个,高位区域大约有1024/256+1024/512+1024/1024个,比较均匀分布,我这里还没考虑图像的高度,但是道理是一样的,考虑了图像高度数量会更大。就模糊效果而言,模糊跟位置数量有关,低位区域的模糊效果是最好的,因为位置最多。)

这里面,我需要说明一下,我为什么要重视旋转角度大的二进制位,而忽视旋转角度小的二进制位呢?其实没道理,因为按照向量的加法,影响方向的主要因素是向量的方向和模。但是问题是这里的方向旋转角度是等比数列,而且符号是交替的,这意味着i的比特位越高,那么旋转的角度偏移越小,并且方向一直在交替,所以这个特征就有了区别,频率域位置的二进制位从小到大排列是旋转角度从小到大排列的,具体也可以计算向量加法的模和方向,我这里就不算了。总之就是旋转角度大的二进制位的ai改变的对fj影响大于旋转角度小的二进制位的ai的改变对fj的数值影响。

总感觉不对劲,这种不安让我在第三天觉得要继续完善这个内容。

我仔细想了想,还是没写明白过程,重新写一遍。

用数值来分析过程吧。

假设为空间域的宽度为10位,只分析高位的部分,我取最高的三位为高位区域,而且我这里是一维图像的情况,所以就是j的二进制的值了。

即是一个100 000 000 0至111 111 111 111 1最大块和

2个次大块x 100 000 000至x 111 111 111(x取值0或者1),

4个最小块x y10 000 000至x y11 111 111(x,y取值0或者1)。

假设所有的ai的数值都是一样的,我这样做是为了理解总体上的情况。实际上最大区也可以选择0开头的,我之前说了是间隔区域,我这里是选了1开头,之前说图像为4个部分的最后一个部分,也是选1开头的,但是我之前也说了这不均匀,说明了我当时分块的时候有意无意地把这些混淆在一起了。

空间域逆序,与i相与,突然发现这样选取的空间域区域不好,因为j的高位为1, 符号受到j的低位控制,不管这个,继续分析算了,但是i的低位在低位区域中是不断变化的,意味着i的最低位是按照000 001 010 011 100 101 110 111的从低位的时候,分别对应0,1,0,1,0,1,0,1。次低位对应为0,0,1,1,0,0,1,1,i的最高位对应为0,0,0,0,,1,1,1,1。说实话,这样理解太难了,换一种方式如下的区域:

即是一个000 000 000 0至011 111 111 111 1最大块和

2个次大块x 000 000 000至x 011 111 111(x取值0或者1),

4个最小块x y00 000 000至x y01 111 111(x,y取值0或者1)。

j的最大块屏蔽了i的最低位,次大块屏蔽了i的次低位。如果不屏蔽i的最低位,在其他位置都确定的时候,那么随着i增大,ai的符号是交替出现的,如果间隔一个加负号就可以还原为没有屏蔽的符号。当j的次大块在最大块里面的时候,就屏蔽了i的低2位。如果不屏蔽i的最低位,在其他位置都确定的时候,那么随着i增大,根据00, 01,10,11,统计1的个数ai的符号是正,负,负,正,屏蔽之后要恢复就是按照上面变号。同理,屏蔽三位的时候,根据000,001,010,011,100,101,110,111统计1的个数ai的符号要恢复非屏蔽的状态需要按顺序执行正,负,负,正,负,正,正,负的过程。

但是所谓的屏蔽,其实是从高位的区域的fj值复制到了低位的区域,然后按照这个规律改变符号而已,例如100 000 000 0至111 111 111 111 1最大块和000 000 000 0至011 111 111 111 1最大块的像素的关系是,他们之间的像素公式从高位100 000 000 0至111 111 111 111 1复制到了低位000 000 000 0至011 111 111 111 1,再每隔一个ai改变了符号。真的很奇怪,因为一幅图像数值是随机的,但是傅里叶变换居然把图像分割成两个部分之后居然给出了联系。

根据规律,从第1个像素ai符号全为正。(这里图像序列从第1位开始,频率序列也是从第1位开始)

第2个像素的符号是ai的i的第M位为1的都取负,否则取零。

第3个像素的ai符号是ai的i的第M-1位为1的都取负,否则取零。如果看做是从第1个像素的复制,那就是把i逆序排列之后,每隔2个频率取负,其他的情况取正。

所以总结的规律是

像素公式的变化规律是按照2次幂增加的时候。

假设已知2^(n-1)次幂,n>=1的个位置像素值公式,求2^(n)次幂个位置的像素值公式。

前半部分已经已知了,只需要求后半部分。把前2^(n-1)次幂,n>=1, 的像素值按顺序复制到高位区域,然后考虑符号的问题。把复制到高位之后的每个fj的每个ai的i的二进制数,取逆序。低位的第j=m个fm,对应高位的第j=m+2^(n-1)个fj,fm中的ai的i取逆序之后,设为k,当二进制数k的第n-1位为1的时候取负,否则取正。(我这里都频率和空间域是从第1位算起,)这样我就能从第一个像素点迭代计算出来所有的点的像素值。

这个分析结果虽然很简洁,但是有什么用呢?对于频率的分析感觉没有用啊。

感觉没什么意义,先不管了。我只能想到fj是关于i的函数,求最大变化率,就是求极值点,应该是

fj对i求导=0。

导数不精确,这里还是对i进行仔细的分析,根据上面的说法,既然是从第0个像素点公式复制到所有的像素点,所以我研究f0即可。

f0=\sum_{i=0}^{N-1}ai*e^{\theta_{i}}\theta_{x}=\sum_{j=1}^{M}xj*(2\pi/2^{j} )M=log_{2}N

还是上面的假设,图像宽度为1024,那么,N=1024, M=10, 因为频率域的频率个数等于空间域的像素点个数。

还是从1算起,

a1的x=0, 所以\theta_{x}=0

a2的x=1,从低位算起,第1位为1, 所以\theta_{x}=2\pi /2^{M},

a3的x=10,从低位算起,第2位为1, 所以\theta_{x}=2\pi /2^{M-1},

a4的x=11, 所以\theta_{x}=2\pi /2^{M-1}+2\pi /2^{M}

。。。。

ax的x最高位为1,其余为0的时候,\theta_{x}=2\pi /2^{M-(M-1)}

确实有高频对应大相位角。但是这不意味着低空间都是大相位角。以三比特位图像序列为例,空间域j为101,反过来也是101,频率i取最贴切的101也是大相位角。

取f0研究意义不大。重新开始,更有可能的是,高频对应的是空间域的高变化有大的相位角。假设所有的ai都是一样的,那么这个公式

fj=\sum_{i=0}^{N-1}\delta (fj,ai)*ai*e^{\theta_{i} }。会抵消所有与j的逆序不一致的i,只留下与j的逆序一致的i, 如果只是统计1的个数,那么只需要统计j中1的个数即可。既然i的逆序是j,

那么就是fj=a*e^{\vartheta_{j}},a为ai取同一个值。\theta _{j}=\sum_{k=1}^{M}(2\pi /2^{k})*xk, j=xM...x2x1。这个相位角应该视为主相位角,当ai不同的时候,根据这个相位角,对于每个ai取差值重新计算。ai可以先求平均值a计算出主相位角。

这样感觉稍微有意义,空间的任何位置,只要低位有值,都是大相位角,如果偏移的影响非常小的话。但是这个公式我看不出来大相位角对fj的数值起明显作用,我之前想要的是这个结论。只能把结论改了,即是ai的i越接近j的逆序的时候,修改ai对fj的影响越大。那么跟大相位角无关,而是跟j有关,j的逆序是大相位角的话,那么确实跟大相位角有关,j的逆序是小相位角,那么就是跟小相位角有关。那么我前面叙述的内容要改一下。

所以如果修改的是中频区域的ai的值,那些像素点受到影响呢?首先可以明白的是,所有的像素点fj都有影响,但是影响严重的是j的逆序近似i的时候。所以当i是处于低频的时候,那么接近i的j的逆序是高空间和低空间的附近,注意是附近而不是全部,附近的概念是任意位置把1换成0或者把0换成1。首先考虑置换一个位置的情形,换具体换那个位置效果最好呢,因为主相位角有偏差,所以我只能得出结论二进制i的p个最低位中置换一个,都有明显效果的,因为这几个位置累加最接近实际相位角。两个向量的夹角越小,相加后的模越大,就是这个道理。

所以i的低位区间被置换逆序之后对应的j处于空间域中的低位和高位都有可能。这意味着即使修改的中频的ai的值,将全的i逆序得到的j在图像的中间区域变化是最明显的,但是其他近似的空间位置,如果把一维图像中间区域按照二倍缩小的金字塔从左对其,其他区域的变化,也是按照这个金字塔变化的,或者变亮或者变暗,程度是按照这个金字塔的方式近似的,至于符号就不是这样复制了。

所以修改纹理为正,那么首先明显影响的是图像中间区域位置,然后是中间位置的低位,扩展到图像的其他位置,扩展方式为最上面的间隔区间。就是把图像中间位置重复贴满整个图像,然后去掉每个复制的高位,低位位置会较次明显有像素变化,可能变亮可能变暗。而把这个低位位置再分成低位和高位,低位部分会有更次的明显变化,也就是说,如果看成是圆心和圆环的关系的话,那么圆环越大,像素变化越不明显,这个圆不是渐变圆,因为是区域的频率改变,如果是一个频率点的ai改变的话,那就是渐变的。不是一个点,反映在图像上是分阶段变化的,总之就是图像远离中心变化不明显。而且这种变化再圆环上连续的,但是确实明暗不同的,只是相邻位置的程度相同,这种连续性是相邻位置的变化的绝对值相等。

感觉又写废了。

我只是总结出来低频区域确实容易产生像素变化。具体的情形是任意的fj中,存在低频区域中的i, 改变ai的值对fj的影响最大。因为ai不同的缘故,在二维图像中,修改中间频率的ai的值,会产生中心位置不规则的闭合曲线,这个曲线内的fj改变最明显,然后将这个曲线上的点和曲面中心连接起来,中心为图像的中心,得到的线段向外延伸一般长度得到新的闭合曲线,然后就是这个不规则环内的fj的改变强度只是内部去除中心环进行拓扑伸缩在重叠之后的为原来fj的值的稍微小于一半,变化的符号可能取负或者正,这是不清楚的。但是这也是我的一种直观的感受,具体也没有证明过。

修改高频区域,按理说应该在高空间位置形成不规则圆环效果的,但是实际上是锐化和模糊效果。难道是圆的半径太大的缘故,只在中心附近极小范围内不在圆环中,图像的中心极小附近会形成向中心靠近的不规则的环带,效果逐渐减弱?

那么修改低频也是如此,形成环带。

但是这感觉不合理。锐化和模糊效果在环内,毕竟每个环都是计算改变量的绝对值,而ai的改变量重新看作是新的频率域,环内看做是新的空间域,这样又有低频和高频之分,只有高频为不为0才决定了空间域是不是突变还是平缓,但是影响很小。至于低频我觉得无法使用,我这个计算公式发现低频和中频都用不上。低频只对相位起决定作用,并且容易产生空间的大块区域的颜色的对比度。

好吧,总结一下吧。我之前的公式能解决低频和高频的解释。我现在做了两件事情,亲自确认了低频对大块空间区域的明显影响,然后是改变任何频率居然会形成环带,因为环上的灰度级不是一致的变化,而是绝对值一致的,所以不容易看不出来。但是改变中频的时候,这个环带应该是比较明显的,应该存在。(这是我的结论,我认为错了,因为我自己不明白。)

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值