- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否存在可用作平滑阈值的现有过滤器?我的意思是像素值应该在两个值之间设置阈值,但中间值是插值的。
基本上,我正在尝试实现这个:
https://www.filterforge.com/wiki/index.php/Thresholds#Interpolation_.28.22Blending.22.29
最佳答案
您需要使用 Core Image Kernel Language 和 CIColorKernel
编写自己的代码。
我会使用smoothstep
并传入两个边缘值以及当前像素的亮度。 CIKL 可能看起来像这样:
kernel vec4 color(__sample pixel, float inputEdgeO, float inputEdge1)
{
float luma = dot(pixel.rgb, vec3(0.2126, 0.7152, 0.0722));
float threshold = smoothstep(inputEdgeO, inputEdge1, luma);
return vec4(threshold, threshold, threshold, 1.0);
}
您可以使用以下代码将其包装到 CIFilter
中:
class SmoothThreshold: CIFilter
{
var inputImage : CIImage?
var inputEdgeO: CGFloat = 0.25
var inputEdge1: CGFloat = 0.75
var colorKernel = CIColorKernel(string:
"kernel vec4 color(__sample pixel, float inputEdgeO, float inputEdge1)" +
"{" +
" float luma = dot(pixel.rgb, vec3(0.2126, 0.7152, 0.0722));" +
" float threshold = smoothstep(inputEdgeO, inputEdge1, luma);" +
" return vec4(threshold, threshold, threshold, 1.0);" +
"}"
)
override var outputImage: CIImage!
{
guard let inputImage = inputImage,
colorKernel = colorKernel else
{
return nil
}
let extent = inputImage.extent
let arguments = [inputImage,
inputEdgeO,
inputEdge1]
return colorKernel.applyWithExtent(extent,
arguments: arguments)
}
}
请注意,您需要确保 inputEdge0
小于 inputEdge1
,否则 smoothstep
会有点疯狂。您可能还想对它们进行饱和
,以确保它们介于 0 和 1 之间。
看看 CIFilter.registerFilterName
,它可以让您使用熟悉的语法创建 SmoothThreshold
的实例,尽管这样可以正常工作:
let image = CIImage(image: UIImage(named: "monalisa.jpg")!)!
let filter = SmoothThreshold()
filter.inputImage = image
let final = filter.outputImage
干杯!
西蒙
关于ios - 如何使用 CoreImage 创建平滑的阈值过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287861/
我创建了如下模糊图像: //Blur the UIImage CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];
我目前正在探索 Apple 的 Core Image 框架中的人脸检测功能。 现在,我正在玩 Apple 的示例项目,该项目将红色方 block 放在人的脸上。 ( https://developer
我有来自 AVAsset 的 CVPixelBufferRef。我正在尝试对其应用 CIFilter。我使用这些行: CVPixelBufferRef pixelBuffer = ... CVPixe
我刚刚在 iOS 5 上查看了 CoreImage 框架,发现可以很容易地为整个图像添加效果。我想知道是否可以对图像的特殊部分(矩形)添加效果。例如在部分图像上添加灰度效果/ 期待您的帮助。 谢谢,辉
我在 IOS 上使用 CoreImage 来检测图像中的人脸。当有多个面孔时它工作正常,但不适用于像这样的简单面孔: 人脸真的很大很明显,但是CoreImage检测不到。我想这可能是因为我的 kCGI
我正在使用以下代码从图像中删除绿色背景。但是图像的边缘有绿色色调并且一些像素已损坏。我如何平滑它并使剪切完美。 func chromaKeyFilter(fromHue: CGFloat, toHu
对于那些不熟悉 Core Image 的人,这里有一个很好的描述: http://developer.apple.com/macosx/coreimage.html 是否有与 Apple 的 Core
我正在开发一个 cocoa 应用程序。我使用 CIFilter 和 CIImage 在 NSImage 中应用核心概念。 所以我需要导入CoreImage.framework。但我没有在我的开发人员库
想象一下,你有几百张方形图片,比如专辑封面 一些有白色边框 注意 10px 左右的边框。 我正要写一些简单的光栅代码来检测和删除这样的边界——简单地说,用灰色填充它们。 但是:这可以以某种方式通过核心
我想使用 coreImage 框架检测 UIImage 是否模糊 最佳答案 尝试使用 OpenCV 功能。 http://answers.opencv.org/question/34481/ios-l
我正在尝试使用 CoreImage CIFeature 来检测面部表情,因为这些是 native API。我创建了一个示例 View Controller 项目并更新了相关代码。当我启动这个 iOS
核心图像不起作用: let fileUrl = Bundle.main.url(forResource: "image", withExtension: "png") let bega
我已经创建了我认为应该是合适的灰度 CIFilter,使用针对白色调整的 CIColorMonochromeFilter。这对我来说看起来很灰度,但我也不是专家,所以我只是想知道这是否是灰度过滤器的准
在内核例程规则的文档中,它说“内核例程通过使用反向映射回输入图像的相应像素来计算输出像素。尽管您可以用这种方式表达大多数像素计算(有些比其他更自然),但对于某些图像处理操作来说,即使不是不可能,也是很
我在图像上尝试 CIColorClamp,它应该只将像素保持在指定范围内 (https://developer.apple.com/library/archive/documentation/Grap
我正在编写一个 iOS,我需要能够在图像中进行边缘检测。我实际上想要类似于 Photoshop 的跟踪轮廓的东西。因为我基本上需要得到最简单的一组线来工作。事情是我似乎无法弄清楚如何去做,坦率地说,我
我正在构建一个 iOS 应用程序来执行一些基本检测。我从 AVCaptureVideoDataOutput 获取原始帧,将 CMSampleBufferRef 转换为 UIImage,调整 UIIma
我终于坐下来将我们的一些图形库转换为使用 CoreImage 来渲染图像(用于混合两个图像之类的事情)并且我已经开始工作但速度很慢(iOS5.01 iPhone 4S)。我认为 CoreImage 的
是否存在可用作平滑阈值的现有过滤器?我的意思是像素值应该在两个值之间设置阈值,但中间值是插值的。 基本上,我正在尝试实现这个: https://www.filterforge.com/wiki/ind
我正在使用来自这个问题的 Dondragmer 的“旋转色调”示例中的代码:How to programmatically change the hue of UIImage? 但是,我得到的结果与我
我是一名优秀的程序员,十分优秀!