相关疑难解决方法(0)

双三次调整大小的实现

我一直在尝试为内存位图编写双三次调整大小算法。我熟悉双三次插值的工作原理,并且我使用维基百科文章现有实现作为编写我自己的版本的指南。

下面是我的简单实现。这里,bmapvector包含位图数据的get_subpixel函数,它是将位图视为由X x Y x Channel像素组成的 3D 数组,并返回指定坐标处的单个子像素。

std::vector<unsigned char> bicubic_resize(
    std::vector<unsigned char>& bmap, std::size_t bmap_width, std::size_t bmap_height, 
    std::size_t channels, std::size_t dest_width, std::size_t dest_height)
{
    std::vector<unsigned char> out(dest_width * dest_height * 3);

    const double tx = double(bmap_width) / dest_width;
    const double ty = double(bmap_height) / dest_height;
    const std::size_t row_stride = dest_width * channels;
    unsigned char C[5] = { 0 };

    for (unsigned i = 0; i < dest_height; …
Run Code Online (Sandbox Code Playgroud)

c++ bicubic

5
推荐指数
1
解决办法
5429
查看次数

标签 统计

bicubic ×1

c++ ×1