Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 图像处理:使用输入图像中像素的强度值进行插值_Image Processing_Interpolation_Bicubic - Fatal编程技术网

Image processing 图像处理:使用输入图像中像素的强度值进行插值

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

当我们进行图像插值时,我认为我们将使用输入图像中像素的强度值

(A) 我正在读三次插值的代码。以下是他们的代码片段:

例24-9。过滤四个Texel行,然后将结果过滤为列

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)