コラム

製造業DXやAI・画像処理技術に関する基礎知識から、現場での実践的な活用ノウハウまで。
エンジニア視点での技術解説や、業界の最新トレンドを発信します。
TOP > コラム > 【製造業DX】ジャガイモで学ぶ!OpenCV外観検査入門 ~色検出~

【製造業DX】ジャガイモで学ぶ!OpenCV外観検査入門 ~色検出~

はじめに

毎日繰り返される「製品の焼き色チェック」「小さなサビの検知」。目視検査の負担増や、検査員による判定バラツキに悩んでいませんか?

実は、製造業の現場で発生するこうした品質検査の課題と、家庭で起こる「ジャガイモの芽の見落とし」は、解決するための画像処理ロジックが全く同じなのです。

本記事では、まず身近な「ジャガイモの芽の検知」を題材に、Pythonの画像処理ライブラリ「OpenCV」使って課題解決のプロセスを体験していただきます。ここで学ぶ基礎技術が、実際の現場でどう応用できるのか、その具体的な流れを解説していきます。

この記事でわかること

  • コンピューターを使った簡単な「色検出」の手法
  • 製造業の現場で「色検出」がどのように活用されるか

この記事はこんな方におすすめ

  • 目視検査の課題に直面している製造現場の責任者の方
  • 現場のDXを推進したいが、画像処理の具体的な仕組みや応用イメージが掴めていない企画・推進担当者の方

人間とコンピュータの「色」の見え方の違い

まず、ジャガイモの「芽」と「皮」を見分けることから始めます。

(※今回は、家庭での比較がしやすいよう、芽の部分が赤くなる「キタアカリ」を使用します。この赤色を検知ターゲットとします。)

通常、コンピュータ上の画像はRGB(赤・緑・青)で表現されますが、これは照明条件(光の当たり具合)によって数値が大きく変動してしまい、特定の色を抽出するのには向きません。

そこで登場するのが「HSV変換」です。

  • H (Hue):色相(色味)
  • S (Saturation):彩度(鮮やかさ)
  • V (Value):明度(明るさ)

画像をこの3つの要素に変換することで、「明るさが変わっても、赤色は赤色」として扱いやすくなります。

「二値化(にちか)」で対象を浮き彫りにする

HSV変換で色情報を整理した後に、「二値化」という処理を行います。これは、以下のルールで画像を白と黒の2色だけにすることです。

  1. 「指定した色の範囲内」のピクセル → 白(255)にする
  2. 「それ以外の色」のピクセル →黒(0)にする

この処理によって、元のカラー画像から赤色の芽の部分だけが白く浮かび上がった「マスク画像」が完成します。

色検出の結果を可視化する

二値化によって芽の部分は白くなりましたが、データ上はただの白黒画像です。最終的に「ここに芽がある」と人間が分かるように、以下のステップで元画像に赤枠をつけます。

  1. 輪郭検出:白いピクセルの塊(芽)の境界線を追跡し、その形状(輪郭)を取得します。
  2. 枠の描画:取得した輪郭情報を利用して、芽を囲む四角い枠を計算し、元の画像に赤色で描画します。

この枠があることで、どの部分が不良箇所として検出されたのかが視覚的に明確になります。

このように、OpenCVのHSV変換と、二値化を組み合わせることで、私たちの目視検査と同じように、「赤色の芽の存在」を検知することに成功しました。

実際のコード(Python / OpenCV)

Google Colab等で動作するサンプルコードです。

import cv2
import numpy as np
from google.colab.patches import cv2_imshow

# 画像読込とHSV変換
img = cv2.imread('potato_kitaakari3.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 赤色領域の抽出(H:0-10と160-180, S:60以上, V:50以上)
mask = cv2.inRange(hsv, (0, 60, 50), (10, 255, 255)) + \
       cv2.inRange(hsv, (160, 60, 50), (180, 255, 255))

# ノイズ除去(オープニング処理)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8), iterations=2)

# ★ 中間のモノクロ画像を表示
print("【中間マスク画像】")
cv2_imshow(mask)

# 輪郭検出と赤枠描画
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
    if 50 < cv2.contourArea(c) < 5000:
        x, y, w, h = cv2.boundingRect(c)
        cv2.rectangle(img, (x-10, y-10), (x+w+10, y+h+10), (0, 0, 255), 2)

# 結果画像を表示
print("【検出結果】")
cv2_imshow(img)

製造現場への応用:ジャガイモ検知は「工場の目」と同じ

「ジャガイモの芽を見つける」という技術は、実は製造業の現場でも全く同じロジックで使われています。以下のように、「特定の色を分離する技術」は、品質管理の基礎です。

業界色検出の種類現場での検知対象
食品工場色相の変化検出パンやクッキーの焦げ(焼き色異常)
自動車部品基準色との一致判定部品の塗装ムラ・異色
電子部品対象色の抽出識別ケーブルのコネクタ色識別、極性確認

現場導入の「壁」を感じていませんか?

ここまでOpenCVによる色検知の有用性をお伝えしてきましたが、いざ工場のラインに導入しようとすると、以下のような「壁」にぶつかることがあります。

  • 照明環境の変化:朝と夕方で光の当たり方が変わり、誤検知が多発する。
  • 複雑な条件:「色」だけでなく「形」や「質感」も同時に見なければならない。
  • 調整の手間:品種や製品が変わるたびに、プログラムの数値を調整するのが大変。

OpenCVのルールベース手法は強力ですが、環境変化や曖昧な判定には弱い側面があります。もし、こうした課題で導入を躊躇されているなら、「AI(ディープラーニング)」の活用が解決の鍵になります。

ムクイルでは、お客さまの要件に合わせて、システムを柔軟にカスタマイズ可能です。画像処理や画像解析の導入をお考えの企業さまは、ぜひムクイルにご相談ください。システムの導入から運用まで、最先端の技術と豊富な実績を活かしてお客さまの課題をサポートいたします。

コンタクト

お問い合わせ

コンタクト