Code Monkey home page Code Monkey logo

grabcut_auto's Introduction

キャラクター画像の顔パーツ自動分割

概要

Live2D制作の前準備である、キャラクター画像の"顔パーツをそれぞれのレイヤーに分割する"という作業を効率化するためのツールを作成しました。

目的

Live2Dを制作するためには、キャラクターイラストの目、口、髪の毛、などのパーツを予め別レイヤーに分割して用意しておかなくてはいけません。しかし、レイヤー分けしていない既存の画像をLive2Dに取り込んで動かしたい場合には、手作業でパーツごとにレイヤー分けをする必要があります。その作業はとても時間がかかり、面倒であるため、このツールにより、対話的前景領域抽出のgrabcutのアルゴリズムとアニメ画像の顔認識のプログラムをベースとして、目、鼻、口などの顔パーツを認識し、自動で切り取りを行うことを目的としました。

機能一覧

  • grabcut_auto - grabcutのプログラム をベースに作成したプログラムgrabcut_manual.pyに顔認識の機能を追加しました。

    • マウスで描写することによって、前景領域と背景領域を選択する機能
    • 顔パーツ(右目、左目、鼻、口、前髪、顔)を顔認識によって認識し、前景領域抽出を行う機能
    • 出力画像をクロップして、それぞれのパーツごとの名前を付けて透過で保存する機能
    • 目の切り取りを選択後、白目部分も切り取り可能に
    • 鼻の自動切り取り
  • landmark.py - アニメ顔用のランドマーク検出プログラム をベースとして、検出した顔ランドマークの座標をもとに、それぞれのパーツごとの座標設定を追加しました。

    • 右目、左目、鼻、口、顔、前髪それぞれの座標設定
    • 矩形で囲む座標4点を設定

デモリールと使い方

デモリール:grabcut_auto.pyを実行し、右目、左目、鼻、口、前髪の前景領域抽出を行っている様子

grabcutauto_demo

出力結果:パーツごとにクロップして保存されたファイル

使い方

コマンドラインにて以下を入力します。抽出する顔パーツは"right_eye", "left_eye", "nose", "mouth", "face", "bangs"のうちのどれかを選んで入力します。顔パーツを選択しないで実行した場合、デフォルトで右目が選択されます。 python grabcut_auto.py <画像ファイル名> <抽出する顔パーツ>

1.入力ウィンドウと出力ウィンドウが開きます。  
2.入力ウィンドウ上で、抽出する顔パーツが矩形で囲まれます。  
3.'n'を数回押すことによって前景抽出を行います。  
4.以下のキーを入力し、前景領域と背景領域をマウスによる描写で選択し、'n'を押すことで抽出したい部分を調整することができます。  

Key '0' - 明確な背景領域をマウスで描写
Key '1' - 明確な前景領域をマウスで描写
Key '2' - 曖昧な背景領域をマウスで描写
Key '3' - 曖昧な前景領域をマウスで描写
key '4' - 白目を前景抽出する
key '5' - "nose"を選択して鼻を前景抽出する
Key 'n' - 前景抽出をアップデートする
Key 'r' - リセット
Key 's' - 出力を保存
key 'q' - 終了

使用言語、環境

  • python 3.7.6
  • Visual Studio 2017
  • Windows 10

必要条件

制作期間、担当箇所など

研究室仮配属の制作課題にて3人チームで作成しました。

  • 制作期間
    • 約2か月
  • 主な担当箇所
    • 鼻、前髪、顔の座標設定、切り取り
    • key'5'により鼻の前景領域を自動で抽出し、クロップして保存する機能
    • 主な保存機能(透過保存、出力画像の保存、マスクの保存など)
    • grabcut_manual.pyの作成
    • 使用したイラストの制作
    • Live2Dの制作

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.