画像をビット演算で合成しよう

背景の上にキャラクターを重ねる。あの処理は、ANDとORで作られています。

まず、キャラクターの形だけを取り出します

128

白い背景に描かれたキャラクターを、白黒2色に分けます。この作業を二値化といいます。

元の画像いろいろな明るさの画素が混ざっています

→

二値化したもの黒(1)と白(0)だけになりました

ヒストグラム(どの明るさの画素が何個あるか)

縦の赤い線がしきい値です。左側(暗い)がキャラ、右側(明るい)が背景になります。

キャラの画素
–
背景の画素
–
全体に占める割合
–

AND と OR で、背景の上にキャラクターを重ねます

手順のまとめ

    1画素ずつ、計算のようすを見ます

    4×4の小さな画像で確かめます。マスをクリックすると、値を変えられます。

    画像Aクリックで切替

    AND

    画像Bクリックで切替

    =

    結果計算した値

    演算ごとの働き

    演算 画像処理での使い道
    AND 必要な部分だけを切り抜く(マスク処理)
    OR 2つの画像を重ね合わせる
    XOR 違いを見つける(差分の検出)
    NOT 白黒を反転させる

    画像処理は、数値の計算

    画像編集ソフトで「背景を透明にする」「切り抜く」「重ねる」といった操作をすると、一瞬で結果が出ます。しかし内部では、すべての画素について地道な計算が行われています。

    その計算の中心にあるのが、ビット演算です。論理回路で学んだAND・OR・NOT・XORが、そのまま画像処理に使われています。

    二値化 ― まず形を取り出す

    画像を合成するには、どこがキャラクターでどこが背景かを、はっきり区別する必要があります。そこで最初に行うのが二値化です。

    やり方は単純です。ある明るさを基準に決め、それより暗ければ1(キャラ)、明るければ0(背景)とします。この基準をしきい値(threshold)といいます。

    明るさ < しきい値 → 1(キャラ)
    明るさ ≧ しきい値 → 0(背景)

    しきい値の選び方が結果を左右します。低すぎるとキャラの一部が消え、高すぎると背景まで拾ってしまいます。上のツールで動かすと、その様子が確かめられます。

    ヒストグラムで判断する

    適切なしきい値を選ぶ手がかりになるのが、ヒストグラムです。横軸に明るさ、縦軸にその明るさを持つ画素の個数をとったグラフです。

    キャラクターと背景がはっきり分かれている画像では、ヒストグラムに2つの山ができます。暗い側の山がキャラ、明るい側の山が背景です。この2つの山の谷の部分をしきい値に選ぶと、うまく分離できます。

    この考え方を自動化した手法もあり、判別分析法(大津の二値化)などが知られています。

    マスクを使った合成

    二値化でできた白黒の画像を、マスクといいます。型紙のようなものです。これを使って合成します。

    手順

    1. マスクを作る:キャラの部分が1、背景が0の画像
    2. マスクを反転させる:NOTで、キャラが0、背景が1にする
    3. 背景を切り抜く:背景画像と反転マスクのAND。キャラが入る場所が黒く抜ける
    4. キャラを切り抜く:キャラ画像とマスクのAND。キャラだけが残り、周りは黒になる
    5. 重ねる:3と4の結果のOR。黒い部分(0)は相手の値がそのまま出るので、きれいに合わさる

    ここでANDとORの性質が効いてきます。ANDは「0との計算は必ず0」なので、不要な部分を消せます。ORは「0との計算は相手の値がそのまま」なので、空いた場所に別の画像をはめ込めます。

    単純に2枚をORで重ねるだけでは、明るい部分どうしが混ざって白飛びしてしまいます。先にANDで場所を空けておくのが、この手順の要点です。

    それぞれの演算の使い道

    演算性質画像処理での役割
    AND0との計算は0になるいらない部分を消す(マスク)
    OR0との計算は相手のまま空いた場所に重ねる
    XOR同じなら0、違えば12枚の違いを見つける
    NOT0と1を入れかえる白黒の反転、マスクの反転

    XORには面白い性質があります。同じ値で2回XORすると、元に戻るのです。この性質は、暗号や、画面上でカーソルを重ねて描く処理に使われてきました。

    カラー画像の場合

    ここまでは白黒で説明しましたが、カラー画像でも考え方は同じです。赤・緑・青それぞれの数値に対して、同じ演算を行います。

    たとえば255(すべて1)とのANDは値をそのまま残し、0とのANDはその色を消します。特定の色成分だけを取り出す処理も、この応用です。

    実際の画像編集ソフトでは、透明度(アルファ値)を使ったより滑らかな合成が行われますが、その土台にあるのは同じ考え方です。

    身近な応用

    身近な機能の多くが、論理演算という単純な計算の組み合わせでできています。

    アルファチャンネルによる合成

    実際の画像編集ソフトでは、ANDとORより滑らかな方法が使われます。透明度を表すアルファチャンネルです。

    各画素に、色の情報(RGB)に加えて透明度の値を持たせます。0なら完全に透明、255なら完全に不透明。その間の値なら半透明です。

    結果 = 前景 × α + 背景 × (1 − α)

    この計算により、輪郭がなめらかに溶け込みます。ANDとORによる方法では、境界がギザギザになりがちでした。0か1かの二択しかないためです。

    とはいえ、考え方の土台は同じです。「どこを残し、どこを消すか」を画素ごとに決める。その判断を、白黒の2択にするか、256段階にするかという違いにすぎません。

    しきい値を自動で決める

    二値化のしきい値を人が決めるのは手間ですし、画像ごとに適切な値は変わります。そこで、自動で求める方法が考えられてきました。

    代表的なのが判別分析法(大津の二値化)です。しきい値で分けた2つのグループについて、グループ内のばらつきが小さく、グループ間の差が大きくなる値を探します。ヒストグラムの谷を数学的に見つける方法だといえます。

    照明のムラがある画像では、画像全体で1つのしきい値を使うとうまくいきません。その場合は、場所ごとに異なるしきい値を使う適応的二値化が有効です。

    使い方

    © 2026 情報ラボ ホーム カリキュラム対応表 画像のデジタル化 音のデジタル化 ラスタとベクタ 画像のビット演算 色の表し方 2進数・16進数 文字コード データはすべて0と1 パリティマジック コンピュータのしくみ 論理回路 アルゴリズム ネットワークのしくみ 電子メールのしくみ 情報システムとデータの流れ シミュレーション データの分析 機械学習 回帰と予測 クラスタリング 統計的推測 パスワードの強さ 暗号のしくみ あやしいメールを見分ける データ量の計算 データ圧縮 JPEGのくり返し保存 運営者情報・お問い合わせ プライバシーポリシー 更新履歴