Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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
C++ 用于缩小尺寸的抗锯齿例程_C++_Antialiasing - Fatal编程技术网

C++ 用于缩小尺寸的抗锯齿例程

C++ 用于缩小尺寸的抗锯齿例程,c++,antialiasing,C++,Antialiasing,我正试图实现一个自定义抗锯齿例程,通过对最近的像素求和来缩小图像 我尝试求和并表示3像素宽,但结果不好,它和以前一样反序列化(编辑我指的是锯齿) 以下是我使用的代码: h is height w is width buf is a buffer containing the values. out is the output buffer for (int x = 0; x < w; x++) for (int y = 0; y < h; y++) {

我正试图实现一个自定义抗锯齿例程,通过对最近的像素求和来缩小图像

我尝试求和并表示3像素宽,但结果不好,它和以前一样反序列化(编辑我指的是锯齿)

以下是我使用的代码:

h is height
w is width
buf is a buffer containing the values.
out is the output buffer

for (int x = 0; x < w; x++)
    for (int y = 0; y < h; y++)
    {
        int n = 3;
        int x1 = x - n;
        int x2 = x + n;

        if (x1 < 0) x1 = 0;
        if (x2 > w -1) x2 = w - 1;

        int y1 = y - n; 
        int y2 = y + n;

        if (y1 < 0) y1 = 0;
        if (y2 > h - 1) y2 = h - 1;

        double sum = 0;
        for (int i = x1; i <= x2; i++)
            for (int j = y1; j <= y2; j++)
                 sum += buf[i][j];

        sum = sum / double((x2 - x1 +1) * (y2 - y1 +1));
        out[x][y] = sum;
    }
h是高度
w是宽度
buf是包含值的缓冲区。
out是输出缓冲区
对于(int x=0;xw-1)x2=w-1;
int y1=y-n;
int y2=y+n;
如果(y1<0)y1=0;
如果(y2>h-1)y2=h-1;
双和=0;

对于(int i=x1;i边缘检测+模糊可能?你说的“像以前一样”是什么意思?你以前到底试过什么?和以前一样:在应用效果之前。但是我阅读了一些文本,我想我只是没有做足够的像素平均值,因为我对4000x4096到950x256大小的图像进行了重采样。你觉得怎么样?你有一个样本图像作为测试用例吗?@didierc:图像缩放是一个很大且丰富的领域。要缩放的图像类型对要应用的算法类型有很大影响。对于连续色调图像,您可以将其视为重采样问题,并使用适当的低通滤波器。(即使如此,您也可以进入滤波器设计的精彩世界。)如果你试图保留特征和边缘,它会变得复杂;非线性方法很常见。但是,对于大多数情况,一个简单的高斯模糊效果很好,其半径比目标像素覆盖的区域稍宽。这就是为什么我要求提供一个测试用例。