本日からはじまったWWDC 2019、SwiftUIをはじめ実にワクワクする新機能が盛りだくさんでした。iOS 13のドキュメントが公開されたので、明日からのセッションでどのへんを勉強するかの予習をかねて、気になった新APIをピックアップしておきます。
Vision
人間検出
VNDetectHumanRectanglesRequest
人間を矩形で検出。
↓はOpenCVを使った結果ですが、こういうのです。
ARKitのpeople segmentationがインパクトありすぎて「矩形で検出」というのは印象薄いですが、「こういうのもあったな」と頭の片隅に置いておくといつか用途があるかもしれません。
文字認識
VNRecognizeTextRequest
文字認識。従来から備えていた文字領域検出ではなく、文字認識、いわゆるOCR的なやつです。
今まで無料で使えるやつだとtesseractとSwiftOCRぐらいしか選択肢がなかったのが、ついに標準でサポート・・・!感無量です。
対応言語はsupportedRecognitionLanguages(for:revision:)
というメソッドをたたけば調べられそう。あとでやってみます。
続報: 対応言語一覧
記事内に書いてある待望の標準OCR機能 VNRecognizeTextRequest ですが、supportedRecognitionLanguages〜を実行してfast/accurateそれぞれの対応言語一覧を出力してみました。結果は・・・
— Shuichi Tsutsumi (@shu223) June 4, 2019
"en-US"
以上!解散😇
/ API Diffsから見るiOS 13の新機能 #WWDC19 https://t.co/QPF61cnpy8
動物検出
VNDetectAnimalRectanglesRequest
VNAnimalDetector
のtype propertyとして今のところcat
とdog
が用意されており、つまりイヌネコ認識が可能となります。ペットが写ってる写真とかを判別できるようになったわけですね。
画像の類似度を計算
VNGenerateImageFeaturePrintRequest
VNFeaturePrintObservation
"Analyzing Image Similarity with Feature Print"というサンプルが公開されており、画像間の類似度が計算できるようになったようです。後でコード読んでみます。
画像分類?
VNClassifyImageRequest
画像分類は前からできたはずだけど、この新クラスは何だろう?
Image Saliency
State of the Unionでも出てきたこのキーワード。"salient"は辞書によると「顕著な」(英英では"most noticeable or important.")の意味。
VNGenerateAttentionBasedSaliencyImageRequest
Generates a heat map that identifies the parts of an image most likely to draw attention.
画像内で、もっとも注意を引く部分を特定するヒートマップを生成・・・?"draw attention"な箇所ってのがよくわかりませんね。試してみます。
VNGenerateObjectnessBasedSaliencyImageRequest
Generates a heat map that identifies the parts of an image most likely to represent objects.
画像内で、もっともオブジェクトを表している部分を特定するヒートマップを生成する。ここでいう「オブジェクト」はこちらで指定できるのでしょうか。あとでもうちょっとAPIを見てみます。
VNSaliencyImageObservation
上2つのrequestの結果として得られるクラス。VNPixelBufferObservation
を継承し、グレースケールのヒートマップデータを持つ。
var salientObjects: [VNRectangleObservation]? { get }
というプロパティを持っていて、salient Objectsの矩形を複数保持できるようになっています。
- Saliencyのサンプルコードとドキュメント
この"Saliency"関連では、"Highlighting Areas of Interest in an Image Using Saliency"というサンプルコードと、"Cropping Images Using Saliency"というドキュメントがあります。
Core ML公式配布モデル
以前の公式配布モデルと言えば、imagenetベースの物体検出がほとんどで、あまり新鮮味のあるモデルは配布されていませんでした。
なので、自作するか、サードパーティ製のを探して使うことがほとんどでした。
・・・が、今日見てみると、楽しそうなモデルがたくさん追加されているではありませんか!
ひょっとして・・・と見てみたら、CoreMLの公式配布モデルも増えてる!
— Shuichi Tsutsumi (@shu223) June 3, 2019
・デプス推定(単眼カメラでも、既存写真からでもデプスが取得可能に)
・セグメンテーション
・YOLO(「画像内のどこにあるか」までわかる物体検出)#WWDC19 #iOS13 pic.twitter.com/UfZvOIfckv
デプス推定
- FCRN-DepthPrediction
- Depth Estimation
redict the depth from a single image.
画像からデプスを「推定」します。つまり、単眼カメラでも、デプスデータを持っていない既存写真からも、デプスが取得できるようになる、ということです。ここからAVDepthData
を生成することもできるはずです。
・・・ということはデプスを利用する機能が実質的にデバイスを限定する機能ではなくなるといえるのではないでしょうか。今まではデプスを使う機能を提供しようにもiPhone X系とか7 Plus, 8 Plus系のハイエンドデバイスのユーザーしか使えなかったので、興味やアイデアはあってもなかなか採用しづらかったのではないかと思います。
これでついにデプス利用機能が多少は普及しそうですね。参考書籍を貼っておきます。
(もちろん今回の発表をふまえてアップデート予定です)
セグメンテーション(領域分割)
- DeeplabV3
- Image Segmentation
Segment the pixels of a camera frame or image into a predefined set of classes.
サムネイル画像によると人間のセグメンテーションのように見えますが、解説を読むと"predefined set of classes"とあり、複数のクラスに対応しているようです。
試しに.mlmodel
ファイルをダウンロードして埋め込まれているdescriptionを読んでみると、
person, dog, cat and so on
とあります。人の他に犬や猫もセグメンテーションできるようです。
関連: http://shu223.hatenablog.com/entry/2018/08/22/200226
物体検出(YOLO)
-
YOLOv3
- Object Detection
-
YOLOv3-Tiny
- (Real-time) Object Detection
Locate and classify 80 different types of objects present in a camera frame or image.
物体を「画像内のどこにあるか」の情報を含め検出してくれるモデル。リアルタイム検出用の"Tiny"版もあります。
質問への回答を生成
- BERT-SQuAD
- Question Answering
Generate answers to questions about paragraphs of text.
公式配布モデルでは唯一の自然言語処理用。
指定したパラグラフ内のテキストに関して、質問を与えると回答を生成してくれるようです。
セマンティック・セグメンテーション / 髪・肌・歯のマスク
AVSemanticSegmentationMatte
Portrait Matteの汎用版。Portrait Matteは人間の全身専用マスクを意味しますが、こちらはその他の領域分割用マスクを意味します。
AVSemanticSegmentationMatte.MatteType
という構造体があり、今のところ次のような種類があるようです。
static let hair: AVSemanticSegmentationMatte.MatteType
A matting image that segments the hair from all people in the visible field of view of an image.
static let skin: AVSemanticSegmentationMatte.MatteType
A matting image that segments the skin from all people in the visible field of view of an image.
static let teeth: AVSemanticSegmentationMatte.MatteType
A matting image that segments the teeth from all people in the visible field of view of an image.
iOS 12の"Portrait Matte"は全身セグメンテーション用のマスクだったのに対して、それの「髪・肌・歯」版が取れるようになったわけです。
auxiliarySemanticSegmentationHairMatte
— Shuichi Tsutsumi (@shu223) June 3, 2019
auxiliarySemanticSegmentationSkinMatte
髪の色だけ変化させる、肌の色だけ変化させる、ってことができるようになるなこれ。(ちなみにTeethMatteもあったので白い歯にもなれる)#iOS13 #WWDC19
これに関連して、Core ImageでもCIImageOption
に次のような種類が追加されています。 1
static let auxiliarySemanticSegmentationHairMatte: CIImageOption
static let auxiliarySemanticSegmentationSkinMatte: CIImageOption
static let auxiliarySemanticSegmentationTeethMatte: CIImageOption
前述のCoreML公式配布モデルの「DeeplabV3」がMatte抽出にあたって内部で使われているのか、別の仕組みなのかは気になります。
AVCapturePhotoOutputの追加API
AVCapturePhotoOutput
にセマンティック・セグメンテーション関連APIがいくつか追加されています。2
var availableSemanticSegmentationMatteTypes: [AVSemanticSegmentationMatte.MatteType]
An array of semantic segmentation matte types that may be captured and delivered along with the primary photo.
var enabledSemanticSegmentationMatteTypes: [AVSemanticSegmentationMatte.MatteType]
The semantic segmentation matte types that the photo render pipeline delivers.
AVCapturePhotoの追加API
AVCapturePhoto
にも。
func semanticSegmentationMatte(for: AVSemanticSegmentationMatte.MatteType) -> AVSemanticSegmentationMatte?
Retrieves the semantic segmentation matte associated with this photo.
CIImageのAVSemanticSegmentationMatteからの初期化メソッド
AVSemanticSegmentationMatteはまだ紹介してませんが、名前からしてPortraitMatteの汎用版(Portrait Matteは人間の全身専用マスクだが、もうちょっと汎用的に領域分割するマスク)で、そこからCIImageを生成するメソッドが追加されています。
init?(semanticSegmentationMatte: AVSemanticSegmentationMatte)
init?(semanticSegmentationMatte: AVSemanticSegmentationMatte, options: [CIImageOption : Any]?)
パパッと既存の(≠オリジナルの)画像処理を適用するにはやっぱりCore Imageが簡単なので、これは必須ですね。
CGImageSource
を渡すイニシャライザも追加されています(今までなかったんだっけ。。?)
init(cgImageSource: CGImageSource, index: Int, options: [CIImageOption : Any]?)
AVSemanticSegmentationMatte
オブジェクトにはプロパティからアクセスできる(持っていれば)ようです。
var semanticSegmentationMatte: AVSemanticSegmentationMatte?
- 関連: "Portrait Matte"とは?: http://shu223.hatenablog.com/entry/2018/08/22/200226
Core Image
デプスブラー
CIContext
にデプスブラーフィルタを生成するメソッドが追加。disparityImage
(視差画像)、portraitEffectsMatte
(全身セグメンテーション用マスク画像)、hairSemanticSegmentation
(髪のセグメンテーション画像)を渡せて、出力としてCIFilter
オブジェクトが返ってきます。3
func depthBlurEffectFilter(for image: CIImage,
disparityImage: CIImage,
portraitEffectsMatte: CIImage?,
hairSemanticSegmentation: CIImage?,
orientation: CGImagePropertyOrientation,
options: [AnyHashable : Any]? = nil) -> CIFilter?
allowLowPower
CIContextOption
に以下の型プロパティが追加されていました。
static let allowLowPower: CIContextOption
ドキュメントには解説がありませんが、ヘッダになにか書いてあるかも知れません。パフォーマンスかなにかを犠牲にして消費電力を抑えるオプションでしょうか?
CIFilterの各フィルタの初期化メソッド
今までは次のように文字列でフィルタ名を指定して初期化しないといけなかったのですが、
let filter = CIFilter(name: "CISepiaTone")!
iOS 13ではドーンと(たぶん)全フィルタの初期化メソッドが追加されました。
一覧は長いので本記事の末尾に載せますが、たとえば上に示したsepia toneフィルタは次のメソッドで初期化できます。
class func sepiaTone() -> CIFilter & CISepiaTone
一色のCIImageを生成する?
ドキュメントには解説がなかったのですが、CIImageに以下のような型プロパティが追加されています。一色塗りのCIImageオブジェクトを生成するのでしょうか?
class var black: CIImage
class var blue: CIImage
class var clear: CIImage
class var cyan: CIImage
class var gray: CIImage
class var green: CIImage
class var magenta: CIImage
class var red: CIImage
class var white: CIImage
class var yellow: CIImage
SoundAnalysis
Analyze streamed and file-based audio to classify it as a particular type.
うおお、SoundAnalysisめっちゃアツい!画像・動画まわりは機械学習ベースでどんどん進化してるのに音声処理は重要なのにあまり変わらないよなーと最近話してたところ。OCRといい「あったらいいな」がほとんど来てる #iOS13 #WWDC19
— Shuichi Tsutsumi (@shu223) June 3, 2019
機械学習ベースで音を分類したりするらしい。何の音を分類してくれるのかAPIリファレンスからはわからなかったのだけど、ドキュメントで、
The SoundAnalysis framework operates on a model that you’ve trained using a Create ML MLSoundClassifier
と書いてあって、Create MLでつくったCore MLモデルを使って音を判別するようです。
ってことで、レイヤーとしてはVisionの音声処理版(Visionは画像処理版)と解釈しとくとよさそう。
AVCaptureMultiCamSession
A subclass of AVCaptureSession that supports simultaneous capture from multiple inputs of the same media type.
"AVMultiCamPiP: Capturing from Multiple Cameras"というサンプルがあるので、あとで実行してみる。
Core Haptics
Compose and play haptic patterns to customize your iOS app's haptic feedback.
サンプルもあります。
このドキュメントも興味深い。"Apple Haptic and Audio Pattern (AHAP)"なるファイルフォーマットがあるらしい。
Audio Effects
そんなに新機能を期待してなかったAudioToolboxのリファレンスを見ていたら、iOS 13+なサンプルが2つもあった。
- https://developer.apple.com/documentation/audiotoolbox/creating_custom_audio_effects?changes=latest_minor
- https://developer.apple.com/documentation/audiotoolbox/incorporating_audio_effects_and_instruments?changes=latest_minor
どちらも"Audio Effects"関連。どのへんがiOS 13なのかまだちゃんと読んでないのですが、あとで見てみます。
AVSpeechSynthesisVoiceGender
以前からある音声合成機能の、合成音声に男女の区別が追加されました。
case female
case male
case unspecified
これに伴い、AVSpeechSynthesisVoice
にはgender
プロパティが追加されました。
var gender: AVSpeechSynthesisVoiceGender { get }
AVSpeechSynthesizer
ちょこちょこと新APIがあります。
var mixToTelephonyUplink: Bool
var synthesizerAudioSession: AVAudioSession
func write(AVSpeechUtterance, toBufferCallback: AVSpeechSynthesizer.BufferCallback)
詳細はいずれ。
MKPointOfInterestCategory
MKMapView
に次のようなプロパティが追加されていて、
var pointOfInterestFilter: MKPointOfInterestFilter?
地図上の"Point of Interest"をフィルタできるようになっています。めちゃくちゃ多くの種類が定義されているので、ここでは触りだけ。
static let airport: MKPointOfInterestCategory
The point of interest category for airports.
static let amusementPark: MKPointOfInterestCategory
The point of interest category for amusement parks.
MKMultiPolygon
MapKitの新クラス。WWDCキーノートを聞きながら
このストリートビューみたいなやつMapKitにAPI追加されてSceneKitやARKitと連携できるようになってたらアツいな
— Shuichi Tsutsumi (@shu223) June 3, 2019
こんな妄想をしてたのもあって、「ポリゴン」という字面からSceneKitと連携するなにかかと一瞬期待したのですが、よく考えたらMKPolygon
というクラスは昔からあって、3Dメッシュ表現手法としてのポリゴンではなくて普通に本来の意味での「多角形」でした。(で、どういうものなのかはまだわかってない)
Create ML
いずれ別記事で書きたいので省略しますが、つくれるモデルの種類が増えています。
Create MLって何だっけ?という方はこちらの記事をどうぞ:
VisionKit
Visionとはまた別の新フレームワーク。ドキュメントスキャナ的なものをつくる機能を提供してくれている?
VisionKit is a small framework that lets your app use the system's document scanner. Present the document camera as a view controller, which covers the entire screen like the camera function in Notes. Implement the VNDocumentCameraViewControllerDelegate in your own view controller to receive callbacks from the document camera, such as completed scans.
watchOSのIndependent App
これめっちゃいいじゃないですか。今まで2つのApp Extensionで構成されてたのがどうなるのか気になる。とりあえずプロジェクト生成してみます。
On-device speech recognition
オンデバイスで音声認識。SFSpeechRecognitionRequest
に、以下のプロパティが追加されている。
var requiresOnDeviceRecognition: Bool { get set }
その他もちろん気になるフレームワーク群
(SwiftUIとかCombineとかはもちろんキャッチアップするとして)
- ARKit 3
- RealityKit
- Reality
- Core ML 3
- Metal
- MetalKit
- Metal Performance Shaders
- Natural Language
etc...
おまけ1: CIFilterに追加された初期化メソッド一覧
上で解説した、CIFilterを生成するメソッド一覧です。しれっと新たに追加されたフィルタもあるかもしれません。
class func accordionFoldTransition() -> CIFilter & CIAccordionFoldTransition
class func additionCompositing() -> CIFilter & CICompositeOperation
class func affineClamp() -> CIFilter & CIAffineClamp
class func affineTile() -> CIFilter & CIAffineTile
class func attributedTextImageGenerator() -> CIFilter & CIAttributedTextImageGenerator
class func aztecCodeGenerator() -> CIFilter & CIAztecCodeGenerator
class func barcodeGenerator() -> CIFilter & CIBarcodeGenerator
class func barsSwipeTransition() -> CIFilter & CIBarsSwipeTransition
class func bicubicScaleTransform() -> CIFilter & CIBicubicScaleTransform
class func blendWithAlphaMask() -> CIFilter & CIBlendWithMask
class func blendWithBlueMask() -> CIFilter & CIBlendWithMask
class func blendWithMask() -> CIFilter & CIBlendWithMask
class func blendWithRedMask() -> CIFilter & CIBlendWithMask
class func bloom() -> CIFilter & CIBloom
class func bokehBlur() -> CIFilter & CIBokehBlur
class func boxBlur() -> CIFilter & CIBoxBlur
class func checkerboardGenerator() -> CIFilter & CICheckerboardGenerator
class func circularScreen() -> CIFilter & CICircularScreen
class func cmykHalftone() -> CIFilter & CICMYKHalftone
class func code128BarcodeGenerator() -> CIFilter & CICode128BarcodeGenerator
class func colorBlendMode() -> CIFilter & CICompositeOperation
class func colorBurnBlendMode() -> CIFilter & CICompositeOperation
class func colorClamp() -> CIFilter & CIColorClamp
class func colorControls() -> CIFilter & CIColorControls
class func colorCrossPolynomial() -> CIFilter & CIColorCrossPolynomial
class func colorCube() -> CIFilter & CIColorCube
class func colorCubeWithColorSpace() -> CIFilter & CIColorCubeWithColorSpace
class func colorCubesMixedWithMask() -> CIFilter & CIColorCubesMixedWithMask
class func colorCurves() -> CIFilter & CIColorCurves
class func colorDodgeBlendMode() -> CIFilter & CICompositeOperation
class func colorInvert() -> CIFilter & CIColorInvert
class func colorMap() -> CIFilter & CIColorMap
class func colorMatrix() -> CIFilter & CIColorMatrix
class func colorMonochrome() -> CIFilter & CIColorMonochrome
class func colorPolynomial() -> CIFilter & CIColorPolynomial
class func colorPosterize() -> CIFilter & CIColorPosterize
class func comicEffect() -> CIFilter & CIComicEffect
class func convolution3X3() -> CIFilter & CIConvolution
class func convolution5X5() -> CIFilter & CIConvolution
class func convolution7X7() -> CIFilter & CIConvolution
class func convolution9Horizontal() -> CIFilter & CIConvolution
class func convolution9Vertical() -> CIFilter & CIConvolution
class func copyMachineTransition() -> CIFilter & CICopyMachineTransition
class func coreMLModel() -> CIFilter & CICoreMLModel
class func crystallize() -> CIFilter & CICrystallize
class func darkenBlendMode() -> CIFilter & CICompositeOperation
class func depthOfField() -> CIFilter & CIDepthOfField
class func depthToDisparity() -> CIFilter & CIDepthToDisparity
class func differenceBlendMode() -> CIFilter & CICompositeOperation
class func discBlur() -> CIFilter & CIDiscBlur
class func disintegrateWithMaskTransition() -> CIFilter & CIDisintegrateWithMaskTransition
class func disparityToDepth() -> CIFilter & CIDisparityToDepth
class func dissolveTransition() -> CIFilter & CIDissolveTransition
class func dither() -> CIFilter & CIDither
class func divideBlendMode() -> CIFilter & CICompositeOperation
class func documentEnhancer() -> CIFilter & CIDocumentEnhancer
class func dotScreen() -> CIFilter & CIDotScreen
class func edgePreserveUpsample() -> CIFilter & CIEdgePreserveUpsample
class func edgeWork() -> CIFilter & CIEdgeWork
class func edges() -> CIFilter & CIEdges
class func eightfoldReflectedTile() -> CIFilter & CIEightfoldReflectedTile
class func exclusionBlendMode() -> CIFilter & CICompositeOperation
class func exposureAdjust() -> CIFilter & CIExposureAdjust
class func falseColor() -> CIFilter & CIFalseColor
class func flashTransition() -> CIFilter & CIFlashTransition
class func fourfoldReflectedTile() -> CIFilter & CIFourfoldReflectedTile
class func fourfoldRotatedTile() -> CIFilter & CIFourfoldRotatedTile
class func fourfoldTranslatedTile() -> CIFilter & CIFourfoldTranslatedTile
class func gammaAdjust() -> CIFilter & CIGammaAdjust
class func gaussianBlur() -> CIFilter & CIGaussianBlur
class func gaussianGradient() -> CIFilter & CIGaussianGradient
class func glideReflectedTile() -> CIFilter & CIGlideReflectedTile
class func gloom() -> CIFilter & CIGloom
class func hardLightBlendMode() -> CIFilter & CICompositeOperation
class func hatchedScreen() -> CIFilter & CIHatchedScreen
class func heightFieldFromMask() -> CIFilter & CIHeightFieldFromMask
class func hexagonalPixellate() -> CIFilter & CIHexagonalPixellate
class func highlightShadowAdjust() -> CIFilter & CIHighlightShadowAdjust
class func hueAdjust() -> CIFilter & CIHueAdjust
class func hueBlendMode() -> CIFilter & CICompositeOperation
class func hueSaturationValueGradient() -> CIFilter & CIHueSaturationValueGradient
class func kaleidoscope() -> CIFilter & CIKaleidoscope
class func labDeltaE() -> CIFilter & CILabDeltaE
class func lanczosScaleTransform() -> CIFilter & CILanczosScaleTransform
class func lenticularHaloGenerator() -> CIFilter & CILenticularHaloGenerator
class func lightenBlendMode() -> CIFilter & CICompositeOperation
class func lineOverlay() -> CIFilter & CILineOverlay
class func lineScreen() -> CIFilter & CILineScreen
class func linearBurnBlendMode() -> CIFilter & CICompositeOperation
class func linearDodgeBlendMode() -> CIFilter & CICompositeOperation
class func linearGradient() -> CIFilter & CILinearGradient
class func linearToSRGBToneCurve() -> CIFilter & CILinearToSRGBToneCurve
class func luminosityBlendMode() -> CIFilter & CICompositeOperation
class func maskToAlpha() -> CIFilter & CIMaskToAlpha
class func maskedVariableBlur() -> CIFilter & CIMaskedVariableBlur
class func maximumComponent() -> CIFilter & CIMaximumComponent
class func maximumCompositing() -> CIFilter & CICompositeOperation
class func median() -> CIFilter & CIMedian
class func meshGenerator() -> CIFilter & CIMeshGenerator
class func minimumComponent() -> CIFilter & CIMinimumComponent
class func minimumCompositing() -> CIFilter & CICompositeOperation
class func mix() -> CIFilter & CIMix
class func modTransition() -> CIFilter & CIModTransition
class func morphologyGradient() -> CIFilter & CIMorphologyGradient
class func morphologyMaximum() -> CIFilter & CIMorphologyMaximum
class func morphologyMinimum() -> CIFilter & CIMorphologyMinimum
class func morphologyRectangleMaximum() -> CIFilter & CIMorphologyRectangleMaximum
class func morphologyRectangleMinimum() -> CIFilter & CIMorphologyRectangleMinimum
class func motionBlur() -> CIFilter & CIMotionBlur
class func multiplyBlendMode() -> CIFilter & CICompositeOperation
class func multiplyCompositing() -> CIFilter & CICompositeOperation
class func noiseReduction() -> CIFilter & CINoiseReduction
class func opTile() -> CIFilter & CIOpTile
class func overlayBlendMode() -> CIFilter & CICompositeOperation
class func pageCurlTransition() -> CIFilter & CIPageCurlTransition
class func pageCurlWithShadowTransition() -> CIFilter & CIPageCurlWithShadowTransition
class func paletteCentroid() -> CIFilter & CIPaletteCentroid
class func palettize() -> CIFilter & CIPalettize
class func parallelogramTile() -> CIFilter & CIParallelogramTile
class func pdf417BarcodeGenerator() -> CIFilter & CIPDF417BarcodeGenerator
class func perspectiveCorrection() -> CIFilter & CIPerspectiveCorrection
class func perspectiveTile() -> CIFilter & CIPerspectiveTile
class func perspectiveTransform() -> CIFilter & CIPerspectiveTransform
class func perspectiveTransformWithExtent() -> CIFilter & CIPerspectiveTransformWithExtent
class func photoEffectChrome() -> CIFilter & CIPhotoEffect
class func photoEffectFade() -> CIFilter & CIPhotoEffect
class func photoEffectInstant() -> CIFilter & CIPhotoEffect
class func photoEffectMono() -> CIFilter & CIPhotoEffect
class func photoEffectNoir() -> CIFilter & CIPhotoEffect
class func photoEffectProcess() -> CIFilter & CIPhotoEffect
class func photoEffectTonal() -> CIFilter & CIPhotoEffect
class func photoEffectTransfer() -> CIFilter & CIPhotoEffect
class func pinLightBlendMode() -> CIFilter & CICompositeOperation
class func pixellate() -> CIFilter & CIPixellate
class func pointillize() -> CIFilter & CIPointillize
class func qrCodeGenerator() -> CIFilter & CIQRCodeGenerator
class func radialGradient() -> CIFilter & CIRadialGradient
class func randomGenerator() -> CIFilter & CIRandomGenerator
class func rippleTransition() -> CIFilter & CIRippleTransition
class func sRGBToneCurveToLinear() -> CIFilter & CISRGBToneCurveToLinear
class func saliencyMap() -> CIFilter & CISaliencyMap
class func saturationBlendMode() -> CIFilter & CICompositeOperation
class func screenBlendMode() -> CIFilter & CICompositeOperation
class func sepiaTone() -> CIFilter & CISepiaTone
class func shadedMaterial() -> CIFilter & CIShadedMaterial
class func sharpenLuminance() -> CIFilter & CISharpenLuminance
class func sixfoldReflectedTile() -> CIFilter & CISixfoldReflectedTile
class func sixfoldRotatedTile() -> CIFilter & CISixfoldRotatedTile
class func smoothLinearGradient() -> CIFilter & CISmoothLinearGradient
class func softLightBlendMode() -> CIFilter & CICompositeOperation
class func sourceAtopCompositing() -> CIFilter & CICompositeOperation
class func sourceInCompositing() -> CIFilter & CICompositeOperation
class func sourceOutCompositing() -> CIFilter & CICompositeOperation
class func sourceOverCompositing() -> CIFilter & CICompositeOperation
class func spotColor() -> CIFilter & CISpotColor
class func spotLight() -> CIFilter & CISpotLight
class func starShineGenerator() -> CIFilter & CIStarShineGenerator
class func straighten() -> CIFilter & CIStraighten
class func stripesGenerator() -> CIFilter & CIStripesGenerator
class func subtractBlendMode() -> CIFilter & CICompositeOperation
class func sunbeamsGenerator() -> CIFilter & CISunbeamsGenerator
class func supportedRawCameraModels() -> [String]!
class func swipeTransition() -> CIFilter & CISwipeTransition
class func temperatureAndTint() -> CIFilter & CITemperatureAndTint
class func textImageGenerator() -> CIFilter & CITextImageGenerator
class func thermal() -> CIFilter & CIThermal
class func toneCurve() -> CIFilter & CIToneCurve
class func triangleKaleidoscope() -> CIFilter & CITriangleKaleidoscope
class func triangleTile() -> CIFilter & CITriangleTile
class func twelvefoldReflectedTile() -> CIFilter & CITwelvefoldReflectedTile
class func unsharpMask() -> CIFilter & CIUnsharpMask
class func vibrance() -> CIFilter & CIVibrance
class func vignette() -> CIFilter & CIVignette
class func vignetteEffect() -> CIFilter & CIVignetteEffect
class func whitePointAdjust() -> CIFilter & CIWhitePointAdjust
class func xRay() -> CIFilter & CIXRay
class func zoomBlur() -> CIFilter & CIZoomBlur
おまけ2: MKPointOfInterestCategory一覧
static let airport: MKPointOfInterestCategory
static let amusementPark: MKPointOfInterestCategory
static let aquarium: MKPointOfInterestCategory
static let atm: MKPointOfInterestCategory
static let bakery: MKPointOfInterestCategory
static let bank: MKPointOfInterestCategory
static let beach: MKPointOfInterestCategory
static let brewery: MKPointOfInterestCategory
static let cafe: MKPointOfInterestCategory
static let campground: MKPointOfInterestCategory
static let carRental: MKPointOfInterestCategory
static let evCharger: MKPointOfInterestCategory
static let fireStation: MKPointOfInterestCategory
static let fitnessCenter: MKPointOfInterestCategory
static let foodMarket: MKPointOfInterestCategory
static let gasStation: MKPointOfInterestCategory
static let hospital: MKPointOfInterestCategory
static let hotel: MKPointOfInterestCategory
static let laundry: MKPointOfInterestCategory
static let library: MKPointOfInterestCategory
static let marina: MKPointOfInterestCategory
static let movieTheater: MKPointOfInterestCategory
static let museum: MKPointOfInterestCategory
static let nationalPark: MKPointOfInterestCategory
static let nightlife: MKPointOfInterestCategory
static let park: MKPointOfInterestCategory
static let parking: MKPointOfInterestCategory
static let pharmacy: MKPointOfInterestCategory
static let playground: MKPointOfInterestCategory
static let police: MKPointOfInterestCategory
static let postOffice: MKPointOfInterestCategory
static let publicTransport: MKPointOfInterestCategory
static let religiousSite: MKPointOfInterestCategory
static let restaurant: MKPointOfInterestCategory
static let restroom: MKPointOfInterestCategory
static let school: MKPointOfInterestCategory
static let stadium: MKPointOfInterestCategory
static let store: MKPointOfInterestCategory
static let theater: MKPointOfInterestCategory
static let university: MKPointOfInterestCategory
static let winery: MKPointOfInterestCategory
static let zoo: MKPointOfInterestCategory
-
https://developer.apple.com/documentation/coreimage/ciimageoption?changes=latest_minor ↩
-
https://developer.apple.com/documentation/avfoundation/avcapturephotooutput?changes=latest_minor ↩
-
https://developer.apple.com/documentation/coreimage/cicontext/3228045-depthblureffectfilter?changes=latest_minor ↩