ios - 如何从 `CIRandomGenerator` 过滤器中获取不同的随机图像?

标签 ios core-image

在我看来,CIFilter(name: "CIRandomGenerator") 的输出始终相同,无论是否多次引用实例的 outputImage或者是否实例化一个新的过滤器:

import CoreImage
let randomFilter = CIFilter(name: "CIRandomGenerator")
let outputImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
let outputImage2 = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
// pause for some amount of time so that it's definitely not 
// instantiating a PRNG with the same timestamp
let rf2 = CIFilter(name: "CIRandomGenerator")
rf2!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))

导致: playground output

如果你检查像素,就会发现它们都是相同的。

我没有看到任何类型的seed参数可以传入来正确初始化伪随机数生成器。

由于CIFilter具有无限范围,我可以随机偏移调用cropped中的位置,这似乎有效,但它看起来像是一个黑客。我是否缺少初始化/getNext这个随机过滤器的正确方法?

最佳答案

我几乎把它作为评论,但我觉得它值得回答。

这实际上看起来你已经正确地向我描述了它。考虑一下 - 什么是随机数生成器?当然,它可能需要一个“种子”,但最终,如果一次又一次运行,大多数生成器提供一个相当可预测的数字。 (前提是您不开始在方程式中添加其他内容。)

因此,CIRandomGenerator 的输出可以被认为是同一类东西。从 (0,0) 开始,它是“随机”到无穷大的。但是,一旦您“播种”了某些东西(给定除 (0,0) 之外的原点),您就有效地“捕获”了大多数人认为是“随机”的东西。

关于ios - 如何从 `CIRandomGenerator` 过滤器中获取不同的随机图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46207952/

相关文章:

objective-c - iOS 图像处理(失真)

ios - CellForRowAtIndexPath 被意外调用

ios - 如何忽略容器的安全区域并尊重 Swift UI 中内容的安全区域

cocoa - CIImage绘图EXC_BAD_ACCESS

iOS 7 Core Image QR Code 生成太模糊

iOS,人脸检测,检测远离人脸的位置

ios - 获取 iOS 照片库中所有照片的数组,其中包含面孔

ios - 在 flickrSearchURLForSearchTerm 中发现 nil

ios - 带有 brozot/Laravel-FCM 的 laravel fcm 推送通知不适用于 ios,但在 android 上运行良好

objective-c - UIButton 调用选择器会使应用程序崩溃