gpt4 book ai didi

objective-c - 自定义 CIKernel 移动像素

转载 作者:行者123 更新时间:2023-12-02 22:05:01 24 4
gpt4 key购买 nike

我正在尝试创建自定义 cifilter(如 adobe 的 warp 过滤器)。如何仅将几个像素(在 ROI 中)移动到内核语言中的其他位置?也许有人可以建议我一些关于它的信息?我已经阅读了所有关于创建自定义 cifilter 的 apple 文档,但没有找到该类型过滤器的内核部分的任何类似示例。有一些 CIFilter 可以做类似的事情(比如 CITwirlDistortion、CIBumpDistortion)。也许在某个地方我可以找到他们的内核?

最佳答案

你必须反过来做。不要说我想将这些输入像素放在输出中的这个位置,你必须回答这个问题,即输入中的像素在哪里是这个输出像素。

看看这个内核:

kernel vec4 coreImageKernel(sampler image, float minX, float maxX, float shift)
{
vec2 coord = samplerCoord( image );

float x = coord.x;
float inRange = compare( minX - x, compare( x - maxX, 1., 0. ), 0. );
coord.x = coord.x + inRange * shift;
return sample( image, coord );
}

它将 minX 和 maxX 之间的垂直条纹替换为向右移动像素的图像内容。将此内核与 minX = 100、maxX = 300 和 shift = 500 一起使用会在左下角给出图像。原件在右上角。

minX = 100, maxX = 300 and shift = 500

所以效果是你将范围内的像素从 (minX + shift, maxX + shift) 移动到 (minX, maxX)

关于objective-c - 自定义 CIKernel 移动像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273956/

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