耳部分のタグ(耳標)​だけを取り出し、その​後文字認識を行いたい

16 views (last 30 days)
勇威 池畑
勇威 池畑 on 5 Jan 2023
Commented: 勇威 池畑 on 19 Jan 2023
現在以下のようなプログラムを作成しています。
うまく耳部分のタグ(耳標)だけを取り出したいです。
その後は文字認識として光学式文字認識などを用いる予定です。
アドバイス宜しくお願いします。
I = imread('\耳標写真\牛舎.png');
HSV = rgb2hsv(I);
Hue = HSV(:,:,1);
figure,
%subplot(2,2,1);imshow(Hue,"InitialMagnification","fit");
%impixelinfo
Th1 =0.13; Th2 =0.15;
BW = (Th1<=Hue&Hue<=Th2);
subplot(2,2,2),imshow(BW,"InitialMagnification","fit");
  2 Comments
Kojiro Saito
Kojiro Saito on 9 Jan 2023
HSV色空間の下限Th1と上限Th2を使ってBWを抽出していますが、これは耳標の抽出をおこなっている計算でしょうか?
勇威 池畑
勇威 池畑 on 10 Jan 2023
すみません、プログラムを書き換えた結果、以下のようになっております。
一枚の牛舎の写真から隠れている耳標を一枚ずつ計7枚取り出すことが現在できています。
その後、文字認識に移りたいのですが耳標部分の画像を拡大したいです。
アドバイス宜しくお願いします。
clear all;close all;clc
I = imread('\牛舎\牛舎1.png');
%%耳標範囲を選択
targetSize = [300 1920];
I0 = centerCropWindow2d(size(I),targetSize);
I1 = imcrop(I,I0);
%%黄色部分を閾値を用いて選択
I_2 = Mask(I1);
%figure,imshow(I_2,"InitialMagnification","fit")
%%穴埋め処理とピクセル数で閾値を決め、ノイズ処理を行う
I_3=imfill(I_2,'holes');
%figure,imshow(I_3,"InitialMagnification","fit")
I_4 = bwareaopen(I_3,200);
%figure,imshow(I_4,"InitialMagnification","fit")
%%ラベリングを行い一枚の牛舎の写真から一枚ずつ耳標を取り出す
se = strel('rectangle',[30 30]);
I_4 = imdilate(I_4,se);
%figure,imshow(I_4)
[L,num] = bwlabel(I_4);
s = zeros(size(L));
for m=1:num
s=(L==m);
I_5 = repmat(s,[1 1 3]);
I_6 = uint8(I_5);
I_7 = I1(:,:,:).*I_6(:,:,:);
%figure,imshow(I_7,"InitialMagnification","fit")
end

Sign in to comment.

Answers (1)

Kojiro Saito
Kojiro Saito on 11 Jan 2023
>その後、文字認識に移りたいのですが耳標部分の画像を拡大したいです。
耳標部分の画像を拡大するには、画像から耳標の周りを切り抜きをしてリサイズする必要があります。
bwareafiltregionprops (どちらもImage Processing Toolboxの関数)を使って対象領域を切り抜きし、imresizeでリサイズできます。文字認識はocr関数 (Computer Vision Toolbox)でできます。
for文の中に以下を追加してみてください。
bwMask = bwareafilt(I_5(:, :, 1), 1);
props = regionprops(bwMask, 'BoundingBox');
imgNew = imcrop(I_7, props.BoundingBox);
imgNewRes = imresize(imgNew, 5); % 画像サイズを5倍にする
ocrResults = ocr(imgNewRes, 'TextLayout', 'block'); % 自動レイアウト解析を無効にしてテキストブロックを検出
disp(ocrResults)
ただ、OCRは精度高く抽出するのが難しいので、こちらのドキュメントを参考に試行錯誤が必要だと思います。
  10 Comments
Kojiro Saito
Kojiro Saito on 19 Jan 2023
CNNを使うということは分かりましたが、上記のコードで何が困っているところでしょうか?提出まで時間がないとは思いますが、聞きたいところを的確にしないと他の方も回答しづらいと思います。
宿題・研究課題などの丸投げはご勘弁くださいませ。
また、問題点・状況をできるだけ明確することで的確な回答に繋がるかと思います。」
勇威 池畑
勇威 池畑 on 19 Jan 2023
ぶしつけな質問失礼しました。
試行錯誤してみます。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!