gpt4 book ai didi

graphics - 如何转换亚像素精度的图像?

转载 作者:行者123 更新时间:2023-12-03 13:48:53 26 4
gpt4 key购买 nike

我的系统需要在屏幕上移动图像。我目前正在使用png并将其放置在所需的屏幕坐标处。

由于屏幕分辨率和所需的帧速率的结合,某些帧是相同的,因为图像尚未移动完整的像素。不幸的是,屏幕的分辨率是无法协商的。

我对子像素渲染如何平滑边缘有一个一般的了解,但是我无法找到关于如何使用阴影将图像转换成少于一个像素的资源(如果存在)。

理想情况下,这对于任何图像都可以使用,但是如果仅可以使用简单的形状(例如圆形或环形),那也是可以接受的。

最佳答案

亚像素插值相对简单。通常,将多少应用于具有恒定相移的全通滤波器,其中相移对应于所需的子像素图像偏移。根据所需的图像质量,您可以使用例如5点Lanczos或其他窗口式Sinc函数,然后根据要X位移还是Y位移还是两者都在一个或两个轴上应用它。

例如。对于0.5个像素的偏移,系数可能是[ 0.22954, 0.65507, 0.95725, 0.95725, 0.65507 ]。为了产生水平移位,您可以将这些系数与像素从x - 2x + 2进行卷积,例如

const float kCoeffs[5] = { 0.22954f, 0.65507f, 0.95725f, 0.95725f, 0.65507f };

for (y = 0; y < height; ++y) // for each row
for (x = 2; x < width - 2; ++x) // for each col (apart from 2 pixel border)
{
float p = 0.0f; // convolve pixel with Lanczos coeffs

for (dx = -2; dx <= +2; ++dx)
p += in[y][x + dx] * kCoeffs[dx + 2];

out[y][x] = p; // store interpolated pixel
}

关于graphics - 如何转换亚像素精度的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com