10-4 スマート板書抽出機能サンプルチュートリアル
過去の【10-12】と【10-13】の章では、「背景ぼかし」と「仮想背景置き換え」の技術を完全に習得しました。これらの応用では、AI の中心的なタスクは 「人物を残し、背景を処理する」 ことでした。
では、非常によくある教育シーンを想像してみてください。オンライン授業の録画を見ていて、講師が黒板に重要な公式をびっしり書いています。しかし、講師が熱心に説明しすぎて、体がずっと黒板の文字(Board Handwriting)を隠してしまい、ノートを取ることができません。このとき、AI を逆方向に動かすことはできるでしょうか。つまり、背景(板書)を残し、人物を「切り抜いて除去」することはできるでしょうか。
スマート教育分野の不思議な技術、人物除去と板書抽出へようこそ。本章では、NexVDO SDK の強力な背景モデリング能力を利用し、画面内の講師がまるで「透明マント」をまとったかのように消え、背後の完璧な板書だけが残るようにします。さらに素晴らしいことに、この SDK の下層アーキテクチャが持つ究極の共通性も体感できます。
学習目標
本章を通して、以下を学びます。
1. 発想の反転とモデル再利用 : 「背景を消す」から「人物を消す」へのロジック変換を体験し、さらに驚くことに、同じ AI モデルファイルを再利用できることを理解します。
2. 透明度しきい値 API の理解 : Custom API 属性を使用し、人物除去の感度と仕上がりのきれいさを正確に制御します。
3. OpenCV による左右比較表示 : cv::hconcat 関数を実装し、「左側に原画像、右側に板書抽出結果」を表示するプロ仕様の監視インターフェースを作成します。
➤ 左右比較表示の構図方式については、 10-7 人物 EPTZ 自動フレーミング機能サンプルチュートリアル
準備作業
モデルファイルを変更する必要はまったくありません。「背景除去」と「人物除去」は、AI の下層原理として、どちらも「人物の輪郭」を正確に切り出す必要があるためです。そのため、この2つの機能は同じ重みファイルを共有します。プロジェクトディレクトリに、前の2章で使用した QDEEP.OD.SEGMENTATION.PERSON.LIGHT.CFG と対応する重みファイルが引き続き置かれていることを確認してください。

コア API はどのように変更するのか
モデルファイルは同じですが、コード内では AI に異なる「設定 Enum」と「Custom API 属性」を与え、今回のタスクが人物除去であることを伝える必要があります。
• モデル設定 Enum の変更 : QDEEP_CREATE_OBJECT_DETECTで、板書抽出専用の QDEEP_OBJECT_DETECT_CONFIG_MODEL_HUMAN_HANDWRITE_EXTRACTION に変更してください。
• 新しい属性で「除去感度」を制御する : QDEEP_SET_OBJECT_DETECT_CUSTOM_PROPERTY を通して新しいパラメータを渡し、AI が人物をどれだけ「徹底的に」除去するかを決定します。
QDEEP_CREATE_OBJECT_DETECT
これは AI エンジンを作成し、「頭脳」(モデル)を読み込むための最も重要な API です。ユーザーはこの API を通して検出器を初期化する必要があります。

QDEEP_SET_OBJECT_DETECT_CUSTOM_PROPERTY
QDEEP_SET_OBJECT_DETECT_CUSTOM_PROPERTY を使用して 0~100 の float 値を渡し、人物マスク分割の精細度を制御します。

QDEEP_OBJECT_DETECT_BOUNDING_BOX 構造体
AI エンジンは、この構造体内の pImageResultBuffer パラメータを通して、計算済みの高画質画像ピクセル(BGR 形式)をこのメモリ領域へ直接書き込み、私たちが取得できるようにします。

コアコードの作成
プロジェクトを開き、重要な微調整を行います。
モデル読み込みと感度設定
コンストラクタ内で、先ほど紹介した新しい Enum を適用し、除去感度を最も正確な 0 に直接設定します。

10-12の ImageBuffer 処理アーキテクチャを再利用する
下層では同じように処理済みの高画質 BGR 画像が出力されるため、接続成功時の Buffer 宣言を変更する必要はまったくありません。
OpenCV の左右並列比較を実装する
顧客がこの「透明化の魔法」の強力さを一目で理解できるように、原画像を直接置き換えるのではなく、「原画像」を左側に、「人物除去後の画像」を右側に表示します。10-7 人型 EPTZ 自動構図で、「原画像」と「追跡クローズアップ」を同時に監視するために使用した OpenCV の左右結合テクニックを覚えていますか。ここではそれを再利用するだけでなく、次の設計も追加します。ユーザーが START DETECTION を押す前は、画面には広い原画像だけを表示します。AI が起動した瞬間にのみ、画面が左右比較表示へ切り替わります。
➤ 左右比較表示の構図方式については、 10-7 人物 EPTZ 自動フレーミング機能サンプルチュートリアル

最終確認
左下の「Build and RUN」 をクリックしてプロジェクトを実行してください。
1. 左下の「Build and RUN」 をクリックしてプロジェクトを実行します。
2. 「誰かがホワイトボードまたは黒板の前で文字を書きながら動いている」テスト動画を用意することをおすすめします。または、同僚にカメラの前でホワイトボードに書くふりをしてもらってください。
3. まず START RECEIVER(受信開始)をクリックします。この時点では、講師が画面内を動いている、シンプルで完全な原画像の全画面表示が見えます。

4. 次に、START DETECTION(検出開始)をクリックします。

テスト結果 : 画面は中央から二分割されます。
• 左半分のウィンドウ(原画像) : 講師は引き続き黒板の前を歩き回り、体が背後の文字を隠しています。
• 右半分のウィンドウ(AI 処理): 講師は画面から完全に消えます。AI は映像の時間軸に基づく背景モデリング技術を通して、講師の背後に隠れていた板書の文字を完璧に復元します。左側で講師がどのように動いても、右側の黒板は常にきれいで鮮明に表示されます。