Image processing 图像处理:使用输入图像中像素的强度值进行插值
当我们进行图像插值时,我认为我们将使用输入图像中像素的强度值 (A) 我正在读三次插值的代码。以下是他们的代码片段: 例24-9。过滤四个Texel行,然后将结果过滤为列Image processing 图像处理:使用输入图像中像素的强度值进行插值,image-processing,interpolation,bicubic,Image Processing,Interpolation,Bicubic,当我们进行图像插值时,我认为我们将使用输入图像中像素的强度值 (A) 我正在读三次插值的代码。以下是他们的代码片段: 例24-9。过滤四个Texel行,然后将结果过滤为列 float4 texRECT_bicubic(uniform samplerRECT tex, uniform samplerRECT kernelTex, float2 t) { float2 f = frac(t
float4 texRECT_bicubic(uniform
samplerRECT tex,
uniform
samplerRECT kernelTex,
float2 t)
{
float2 f = frac(t); // we want the sub-texel portion
float4 t0 = cubicFilter(kernelTex, f.x,
texRECT(tex, t + float2(-1, -1)),
texRECT(tex, t + float2(0, -1)),
texRECT(tex, t + float2(1, -1)),
texRECT(tex, t + float2(2, -1)));
因为他们从分形(t)中得到子纹理,所以“t”并不精确地位于输入图像的像素位置上。
那么为什么直接使用“t”从原始图像中采样强度值,如“texRECT(tex,t+float2(-1,-1))”
就我个人而言,我认为我们应该使用
t - frac(t)
(B)
与“”中的示例相同
他们的“用于双立方插值的GLSL着色器代码”片段是:
然后使用m和n的偏移量
(C) 现在我很困惑。我认为我们将在输入图像中使用“精确”像素的强度值。
我们应该使用哪种方法?插值是指使用精确的像素值来估计不在精确像素边界上的像素的值。我不确定我是否理解你的问题。你所说的“精确像素值”是指“原始输入图像上的精确像素值”,对吗?因此,我认为他们的代码似乎没有遵循规则……我怀疑
texRect
会将坐标截断为整数,以获得精确的像素值。不过,我对这方面的了解还不够确定。看来你对图像处理很感兴趣——你能帮我们打开这个专门的小组吗:area51.stackexchange.com/Propositions/66531/computer-vision/72084只需对不到10票的问题进行投票。谢谢
float a = fract( TexCoord.x * fWidth ); // get the decimal part
float b = fract( TexCoord.y * fHeight ); // get the decimal part
for( int m = -1; m <=2; m++ )
{
for( int n =-1; n<= 2; n++)
{
vec4 vecData = texture2D(textureSampler,
TexCoord + vec2(texelSizeX * float( m ),
texelSizeY * float( n )));
TexCoord - vec2(a,b)