前景(人物など)以外の部分は透けるので、背景合成などに使えます。
手順
1、マスク画像をつくる。
アップル公式配布のDeepLabv3モデルなど、セグメンテーションモデルをつかってマスク画像を取得します。
こちらの記事など参考にしていただければ。
2、透過画像を作る。
元の画像と同じサイズで透過画像を作ります。
settingAlphaOneの引数では「透過にならない領域」を指定するので、ゼロを指定して全面透過画像を取得します。
let transparentImage = originalCIImage.settingAlphaOne(in: CGRect.zero)
3、合成する。
前景=オリジナル画像、背景=透過画像、マスク画像=残したいオブジェクトのマスク画像、でCIFilterで合成します。
let compositeImage = CIFilter(name: "CIBlendWithMask", parameters: [
kCIInputImageKey: originalCIImage,
kCIInputBackgroundImageKey:transparentImage,
kCIInputMaskImageKey:mask]).outputImage
背景画像を用意してもう一度合成すると、合成画像ができます。
🐣
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。