やりたいこと
以下二つの画像から差分をとってオブジェクト(矢)を抽出したい
目的画像(背景)back.jpg
目的画像(矢がある)imput.jpg
書いてみたコード
以下を参考に書いてみたので説明できないところもあります。
参考url
%目的画像 input = imread('input.jpg'); %background back = imread('back.jpg'); diff = (input - back); %grayに変換 diff_gray = rgb2gray(diff); %閾値を求める thresh = graythresh(diff_gray); %閾値よりも差が大きい部分を求める(二値画像にする) diff_bw = im2bw(diff_gray,thresh); figure,imshow(diff_bw); result = repmat(uint8(0),[size(input)]); for i=1:3 color=input(:,:,i); color(diff_bw ~= 1)=0; result(:,:,i)=color; end figure,imshow(result);
結果
最後に
どうやってinput画像とback画像から差分をとって矢だけを出力するのかがわかりません。
よろしければアドバイスをよろしくお願いします。
matlabでの画像処理は不慣れなため至らない点があればご指摘してくださると幸いです。
どうかよろしくお願いします。
追記1
ちなみにpythonのopencvならできた
matlab情報少ない....?
import cv2 import numpy as np # gray img_in = cv2.imread('B1_easy.jpg',1) img_bk = cv2.imread('B2_easy.jpg',1) fgbg =cv2.bgsegm.createBackgroundSubtractorMOG() fgmask = fgbg.apply(img_in) fgmask = fgbg.apply(img_bk) cv2.imshow('image',fgmask) cv2.waitKey(0) cv2.destroyAllWindows()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。