要約
「Pythonは、機械学習やデータ分析の分野で広く使われている言語です。
今回は、日本最大手のECサイトである楽天市場がPythonを活用した取り組みをご紹介します。
」
詳細内容
楽天市場は、Pythonを活用した様々な取り組みを行っております。
ここではその一例として、商品画像を自動で切り抜くことができる「OpenCV」を利用した自動切り抜きプログラムを紹介します。
商品画像には、バックグラウンドや周囲のノイズが入っている場合があります。
これらを除去し、商品の本来の形状を正確に切り取る必要があります。
そこで、OpenCVを用いて、商品画像から自動で背景を除去し、商品を切り抜くプログラムを実装しています。
プログラムの概要は以下の通りです。
まず、商品画像を読み込んで、グレースケールに変換します。
次に、背景を除去するために、背景画像を作成します。
背景画像は、商品画像から背景だけを抽出し、ぼかした画像です。
背景画像は、GaussianBlur()関数を用いてぼかしています。
背景画像を作成したら、元の商品画像から背景画像を引いた差分画像を作成します。
さらに、閾値処理を行い、二値化した画像を作成します。
ここで、閾値とは、明るさの基準値のことで、閾値処理とは、画像を明るさによって白黒に分ける処理のことです。
二値化した後、morphological operationsを行い、ノイズを除去します。
具体的には、膨張(dilation)操作を行い、小さな穴を埋め、余分な範囲を削除します。
そして、最後に商品を切り抜きます。
以下は、Pythonで実際に実装したコードの一部です。
import numpy as np
import cv2# 商品画像の読み込み
img = cv2.imread(‘product_image.jpg’)# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 背景画像の作成
blurred = cv2.GaussianBlur(gray, (5, 5), 0)# 差分画像の作成
diff = cv2.absdiff(gray, blurred)# threshold処理
_, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)# モルフォロジー変換
kernel = np.ones((3,3),np.uint8)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=4)# 画像の輪郭を検出
(_,contours, _) = cv2.findContours(closing.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 商品を切り抜く
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)# 切り抜いた商品画像を表示
cv2.imshow(‘Product Image’, img)
cv2.waitKey(0)
cv2.destroyAllWindows()このように、OpenCVを利用することで、商品画像の自動切り抜きプログラムを実装することができます。
このプログラムの利点は、従来の手動での切り抜きよりも正確性が高く、短時間での処理が可能である点です。
これらの特性は、ECサイトなどの商品画像を多数扱う場合に非常に便利であり、楽天市場では商品画像の自動切り抜きにOpenCVを広く利用しています。
コメント