(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-04
(54)【発明の名称】マシン視覚に基づく透明度検出方法
(51)【国際特許分類】
G06T 7/00 20170101AFI20230728BHJP
G01N 21/59 20060101ALI20230728BHJP
【FI】
G06T7/00 350C
G01N21/59 C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022567434
(86)(22)【出願日】2021-11-16
(85)【翻訳文提出日】2022-11-04
(86)【国際出願番号】 CN2021130867
(87)【国際公開番号】W WO2022247162
(87)【国際公開日】2022-12-01
(31)【優先権主張番号】202110579783.3
(32)【優先日】2021-05-26
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】505072650
【氏名又は名称】浙江大学
【氏名又は名称原語表記】ZHEJIANG UNIVERSITY
(74)【代理人】
【識別番号】100216471
【氏名又は名称】瀬戸 麻希
(72)【発明者】
【氏名】林峰
(72)【発明者】
【氏名】金倩楠
(72)【発明者】
【氏名】甘力博
【テーマコード(参考)】
2G059
5L096
【Fターム(参考)】
2G059AA05
2G059BB05
2G059CC09
2G059EE01
2G059EE13
2G059FF01
2G059FF04
2G059FF07
2G059HH02
2G059JJ13
2G059KK04
2G059MM01
2G059MM02
2G059MM03
2G059MM04
2G059MM05
2G059MM09
2G059MM10
2G059MM14
5L096DA02
5L096FA02
5L096FA32
5L096GA08
5L096GA41
5L096GA51
5L096HA11
5L096KA04
5L096MA07
(57)【要約】
本発明は、コンピュータ視覚の技術分野に関し、具体的には、マシン視覚に基づく透明
度検出方法に関し、画像処理に基づくスマートサンディングディスク及び量水標の識別技
術を提案し、従来のサンディングディスクを画像処理、深さ学習などの技術に組み合わせ
、水体の透明度を正確に測定し、人工測定過程において主観的と客観的要素による示度に
誤差があり、円盤位置の判断が不正確である欠点を克服する。この方法は、正確率が高く
、数値が安定して客観的で、人の主観的な要素の影響を受けず、高い応用価値を持ってい
る。
【特許請求の範囲】
【請求項1】
マシン視覚に基づく透明度検出方法であって、
1)サンディングディスクを操作して水体の透明度測定を開始し、カメラを開いて撮影
するステップと、
2)サンディングディスクの臨界位置を判定するステップと、
3)量水標を識別し且つ量水標の示度を計算するステップと、
4)出力して表示するステップとを含み、
ここで、前記ステップ2)に記載のサンディングディスクの臨界位置を判定することは
、サンディングディスクの初期分割、サンディングディスクの微細分割及びサンディング
ディスクの臨界位置の判定を含み、具体的には、以下のステップを含み
2-1)サンディングディスクの初期分割:ビデオ画像から前記サンディングディスク
上の白色部分を分割し、サンディングディスクの大きさの決定、画像でのサンディングデ
ィスクの位置の測位及び閾値決定を含み、
2-1-1)サンディングディスクの大きさの決定:faster rcnnアルゴリ
ズムを採用してサンディングディスクの大きさの識別を行い、前記サンディングディスク
の大きさは、矩形の面積を指し、前記矩形の4辺は、ちょうど前記サンディングディスク
を囲むことができ、まずサンディングディスクを含むビデオに対してフレーム抽出を行い
、3フレームごとに一枚の画像を切り取り、そして固定のフォルダに記憶し、フォルダに
おける一枚目の画像に対して、前記faster rcnnアルゴリズムを用いてサンデ
ィングディスクの識別を行い、収集したデータをMatlab2020bにおけるima
ge labeler機能でマーキングし、
2-1-2)画像でのサンディングディスクの位置の測位:前記サンディングディスク
が初期位置にある時の画像を前記faster rcnnアルゴリズムで識別した後、矩
形ブロックの位置及び大きさを得、この矩形ブロックの上縁を境界線として、前記画像を
上下の二つの部分に分け、下半部分の画像の左上角から始まり、この前に決定された矩形
ブロックを一定のステップサイズで画像全体に移動し、移動するたびに矩形ブロック内の
内容を切り取り、ブロック内の輝度平均値を計算し、輝度平均値の高いサンプリング矩形
ブロックが位置する位置は、前記サンディングディスクが位置する位置であり、
前記画像には、輝度が前記サンディングディスクよりも高い又は差の少ない背景物体が
含まれる場合、ビデオにおける最後の10フレームの画像の平均値を取って背景画像とし
、前記サンディングディスクを含む画像から背景画像を減算すると、画像における背景部
分は、減算後にほぼ0になり、そして減算後の画像に対して、前記ステップ2-1-2)
における方法を利用してサンディングディスクが位置する位置を判定し、
2-1-3)閾値決定:前記サンディングディスクが位置する位置を決定した後、前記
サンディングディスクを元の画像から抽出し、そして分割されたサンディングディスク画
像をRGBスペースからHSVスペースに変換し、輝度成分を抽出し、輝度棒グラフを確
立し、クラス間最大分散法を用いて閾値を決定し、そのアルゴリズム過程として、
第一のステップにおいて、前記サンディングディスク画像全体の輝度値をセットCとし
、輝度値を二つのクラスに分け、一クラスをセットC1とし、もう一クラスをセットC2
とし、且つC1∩C2=0で、C1∩C2=Cであり、
第二のステップにおいて、輝度値kを取り、輝度値の[0,k-1]範囲内の輝度値を
全て前記セットC1内に入れ、残りの輝度値を前記セットC2内に入れ、前記セットC1
内の輝度値の平均値をm1とし、前記セットC1内の要素の数がセットC内の要素の数に
占める割合をp1とし、前記セットC2内の輝度値の平均値をm2とし、前記セットC2
内の要素の数が前記セットC内の要素の数に占める割合をp2とし、前記セットC内の輝
度値の平均値をmとし、クラス間分散の計算式をg=p1*(m1-m)^2 + p2
*(m2-m)^2とし、
第三のステップにおいて、輝度値kを0から255まで1つずつ取り、値を取るごとに
、対応するクラス間最大分散を計算し、最大のクラス間分散に対応するk値を255で割
ると、最後の閾値になり、
閾値を決定した後、この閾値よりも高い輝度をすべて保持し、その他をすべて除去し、
そしてRGBスペースに変換し、前記サンディングディスク上の白色部分を得、
2-2)サンディングディスクの微細分割:前記サンディングディスクが臨界位置に近
接する時に、前記サンディングディスク上の白色部分を分割し、前記サンディングディス
クの微細分割は、以下のステップを含み、
2-2-1)前記サンディングディスクが臨界位置に近接する時に、サンディングディ
スクの分割閾値を決定し且つそれを分割し、
前記ステップ2-1)に基づいて、いずれか一つのサンディングディスクビデオを切り
取り、全ての切り取られた画像に対してステップ2-1)の方法を用いてその閾値を決定
し、且つ各枚の画像閾値の大きさを折れ線図に作成し、
まず前記サンディングディスクが臨界位置に近接する時に、前記サンディングディスク
が位置する矩形ブロックの位置を決定し、前記サンディングディスク画像のホッピング点
の前の画像の前記サンディングディスクが位置する矩形ブロックの高さをhとし、幅をw
とし、左上角の頂点座標を[x,y]とし、[x,y]を起点として幅が1.6*wで、
高さが1.6*hの矩形領域を区分することで、この後の画像における前記サンディング
ディスクがいずれもこの矩形領域に現れることを確保し、
そして、閾値ホッピング点の前の閾値データに対して線性フィッティングを行い、フィ
ッティング曲線を用いてホッピング点の後の閾値の大きさを予測し、予測値をホッピング
点の後の画像の分割閾値とし、ホッピング点の決定については、kmeansクラスタリ
ング分析の方法を採用することは、
隣接点閾値の差分を求め、且つすべての差分に絶対値を取る第一のステップと、
matlabが持参したkmeans関数を用いてこれらの差分を閾値ホッピング点の
位置の差分及び非ホッピング点の位置の差分に分類する第二のステップと、
各クラス差分の平均値を計算し、平均値が大きいクラス差分を取り、このクラス差分が
最初に現れる位置がホッピング点の位置であり、
ホッピング点の位置を見つけ、元の閾値曲線、閾値差分曲線、閾値フィッティング曲線
を作成する第三のステップとを含み、
2-2-2)平均値に基づく背景減算法を採用して臨界閾値を決定し、サンディングデ
ィスクが見えない時に、水面をサンディングディスクとして分割することを排除し、平均
値に基づく背景減算法を採用して処理を行い、背景画像を得、サンディングディスクを元
の画像から分割するたびに、対応する位置での背景画像も分割し、背景画像は、すべて水
面であるため、その背景輝度値は、正規分布であり、その平均値をuと、基準差をδと設
定し、この図の閾値の代わりにu+2δを用い、ステップ2-3)における臨界位置の判
定に根拠を提供し、
2-3)サンディングディスクの臨界位置の判定:分類ネットワークを使用してサンデ
ィングディスクの臨界位置を判定し、具体的には、
2-3-1)全てのサンディングディスクの白色部分の分割結果をいずれも統一された
寸法にスケールし、Matlab2020bのresnet18ネットワークを用いて分
類ネットワークを構造し、サンディングディスクの分割結果を分類するステップと、
2-3-2)より多くのシナリオのサンディングディスクビデオを収集し、分類ネット
ワークの訓練用のデータセットを製作し、データを一クラスがサンディングディスクあり
を表し、もう一クラスがサンディングディスクなしを表す二つのクラスに分けるステップ
と、
2-3-3)訓練済みの分類ネットワークを用いてサンディングディスクの臨界位置を
判断するステップと、
2-3-4)サンディングディスクの臨界位置を取得した後、校正を行うステップであ
って、実際の臨界位置は、サンディングディスクの臨界位置+ΔDであり、ここで、ΔD
は、人の目とカメラの観察による誤差であるステップとを含むこととを含む、ことを特徴
とするマシン視覚に基づく透明度検出方法。
【請求項2】
ステップ3)に記載の量水標を識別し且つ量水標の示度を計算し、Deeplabv3
+アルゴリズムを利用してこの位置での量水標に対して識別分割を行い、そして量水標上
の文字を抽出し、文字を分類し、最後に量水標の示度を計算し、透明度値を得、具体的に
は、以下のステップを含み、
3-1)Deeplabv3+アルゴリズムを利用してこの位置での量水標に対して識
別分割を行い、
3-1-1)データセットを構築し、image labeler機能を用いてデータ
マーキングを行うステップと、
3-1-2)Deeplabv3+を用いてネットワーク訓練を行うステップと、
3-1-3)訓練済みのDeeplabv3+を用いて量水標分割を行うステップとを
含み、
3-2)量水標上の文字を抽出し、
3-2-1)量水標の傾斜校正を行うステップを含むステップであって、
最小二乗推定を利用してDeeplabv3+分割の結果に対して傾斜校正を行い、そ
の計算式は、式(1)のように示し、
(1)
量水標の左側又は右側の縁上の点の座標を(xi,yi)と設定し、ここでxiは、横
座標を表し、yiは、縦座標を表し、i∈[1,n]であり、量水標の傾斜傾きを計算す
るステップと、
3-2-2)校正後の量水標の縁位置を決定し、そして元の画像から量水標を分割する
ステップと、
3-2-3)分割された量水標に対して転置及びミラーリングを行い、右に90度回転
させ、水平な量水標に変えるステップと、
3-2-4)matlabのim2bw関数を用いて、分割された量水標に対して二値
化を行い、二値化後の画像を反転させ、腐食アルゴリズムを用いて文字と文字と間の接続
を切断するステップと、
3-2-5)matlabが持参したregionprops()関数を用い、全ての
文字を矩形ブロックでマーキングするステップと、
3-2-6)kmeansクラスタリング分析を利用し、大きい文字と小さい文字を分
け、具体的には、
文字を囲む矩形ブロックの面積を計算する第一のステップ、
matlabのkmeans()関数を用い、上記矩形ブロック面積に対してクラスタ
リング分析を行い、大きい文字及び小さい文字の二クラスに分ける第二のステップ、及び
各クラスの面積平均値を計算し、平均値が大きいクラスが大きい文字であり、且つそれ
らを分割する第三のステップを含むステップとを含み、
3-3)量水標文字を分類し、CNN分類ネットワークを構造して量水標文字を分類し
、Matlab2020bのresnet18ネットワークを分類器として用い、合計1
0個のクラスを設定し、0から9までの各数字は、一つのクラスに属し、matlabが
持参した数字文字データセットを採用し、データセット内の全ての画像に対して二値化を
行い、且つ統一された大きさにスケールし、
3-4)量水標の示度を計算し、透明度値を得、
水平な量水標に対して、数十番目の目盛りの位置は、各非0数字とその右側の隣接する
数字0との間にあり、非0数字をkと設定し、数字kの右縁位置をx_right(k)
とし、数字kの右側の隣接する数字0の左縁位置をx_left(k)とすると、数十番
目の目盛りの位置x(k)の計算式は、以下の式のように示し、
(2)
量水標上の非ゼロの最小数字をiとすると、比値関係に基づいて得られる量水標の示度
計算式は、以下の式のように示し、
(3)
ことを特徴とする請求項1に記載のマシン視覚に基づく透明度検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ視覚の技術分野に関し、具体的には、マシン視覚に基づく透明
度検出方法に関する。
【背景技術】
【0002】
水体の透明度は、水質の良し悪しを評価するための常用指標であり、比較的に常用され
る従来の方法は、サンディングディスク法であり、この方法は、人が目でサンディングデ
ィスクのぼやけ具合を判断し且つ量水標の示度を読み取る必要があり、観察者の主観的な
要素の影響を受け、それによって、透明度の測定値に大きな不確実性を持たせる。また、
外部の客観的な要素、例えば光線の強弱、サンディングディスクのジッタなども透明度の
測定に影響を与える。このような従来の方法で透明度を測定すると、操作者の経験に対す
る要求が比較的に高く、且つ比較的に大きな不確実性と不安定性が存在する。現在、環境
生態に対する要求の高まりに伴い、水体の透明度はすでに非常に重要な指標となり、水体
の透明度の変化を正確且つリアルタイムに監視することは、環境保護部門が都市河道の整
備にタイムリーに対応するのに役立つ。水産養殖分野では、水体の透明度の高さは、養殖
生産量に直接影響する。そのため、水体の透明度の正確な測定は、生活生産の促進に重要
な意義があり、正確且つ効果的な水体の透明度測定方法の提案は、切実な需要となってい
る。
【0003】
現在、透明度の測定方法は、多くあり、例えば公開番号がCN 109859183A
の中国特許文献には、縁計算に基づく多要素を一体化にした水体スマート識別方法及び生
態ステーションが開示されており、この方法は、サンディングディスクが浸漬されたター
ゲット水域画像を予め設定されるSSD深さ学習ネットワークに入力し、且つこのSSD
深さ学習ネットワークにより出力されたサンディングディスクの画像識別結果に基づき、
縁計算方法を用いてターゲット水域の現在の第二の水体の透明度情報を取得するが、この
方法は、水体検出センシングコンポーネントにより収集されたターゲット水域の現在の少
なくとも一つの第一の水体の透明度情報及び少なくとも一つの第一の水位情報を取得する
必要がある。公開番号がCN 109784259 Aの中国特許文献は、画像識別に基
づく水体の透明度スマート識別方法及びサンディングディスクコンポーネントを開示し、
この方法は、サンディングディスクが浸漬されたターゲット水域画像を予め設定される画
像識別モデルに入力し、且つこの画像識別モデルの出力を前記サンディングディスクの画
像識別結果とするが、この方法は、二つの色が互い違いになった作業面を含む複数の円盤
を必要とし、且つ各前記円盤が前記柱体の周りに螺旋階段式で固定して配置されている。
公開番号がCN110672563Aの中国特許文献は、知能水環境の透明度画像に適用
される識別検出方法を開示し、この方法は、水質監視点にサンディングディスクつきの特
製のスクリュー部材を垂直に固定する必要がある。上記方法は、往々にしてデータを事前
に取得する必要があり又は特定装置を必要とすり、操作が比較的に複雑で、実用性が強く
ない。
【0004】
コンピュータ視覚技術の巨大な発展に伴い、コンピュータ視覚技術を利用して画像デー
タを処理すると、主客観要素の影響を効果的に回避でき、正確性が高く、アプリケーショ
ンシナリオが広く、汎化能力が強いという利点がある。本例では、深さ学習、画像処理技
術をサンディングディスク測定技術に組み合わせ、水体の透明度の測定に用いるマシン視
覚に基づくスマート画像処理識別技術を提案する。
【発明の概要】
【0005】
本発明の目的は、マシン視覚に基づく透明度検出方法を提供することであり、本発明例
では、カメラは、一つのカメラであってもよく、二つのカメラであってもよく、水質の透
明度が比較的に浅い場合、一つのカメラを採用することができる。水質の透明度が比較的
に深く、一つのカメラがサンディングディスク及び量水標の移動を同時に追跡撮影できな
い場合、二つのカメラを採用することができ、そのうちの一方は、サンディングディスク
を撮影し、他方は、量水標を撮影し、二つのカメラは、同時に撮影し、人がサンディング
ディスクで水体の透明度を測定する動作(サンディングディスクを見ながら量水標を見る
)を模倣し、画面が比較的に明瞭なサンディングディスク及び量水標昇降ビデオを取得し
、撮影したビデオをコンピュータにクラウド経由でまたは直接に転送して処理させる。
【0006】
上記目的を実現するために、本発明例は、二つの側面の内容を含み、一つの側面は、サ
ンディングディスクの臨界位置の判定であり、もう一つの側面は、量水標識別であり、そ
のフローチャートは、
図1に示され、具体的には、
1)サンディングディスクを操作して水体の透明度測定を開始し、カメラを開いて撮影
するステップと、
2)サンディングディスクの臨界位置を判定するステップと、
3)量水標を識別し且つ量水標の示度を計算するステップと、
4)出力して表示するステップとを含む。
【0007】
ステップ2)では、サンディングディスクの臨界位置を判定し、サンディングディスク
の臨界位置とは、サンディングディスクがちょうど見えない時の位置である。サンディン
グディスクの初期分割、サンディングディスクの微細分割及びサンディングディスクの臨
界位置の判定などのステップを含み、具体的に以下のとおりである。
【0008】
2-1)サンディングディスクの初期分割:ビデオ画像からサンディングディスク上の
白色部分を分割し、具体的には、サンディングディスクの大きさの決定、画像でのサンデ
ィングディスクの位置の測位及び閾値決定などのステップを含む。
【0009】
2-1-1)サンディングディスクの大きさの決定:本例では、従来のfaster
rcnnアルゴリズムを採用してサンディングディスクの大きさの識別を行い、
説明すべきこととして、ここでの大きさは、サンディングディスクの面積ではなく、矩
形の面積であり、この矩形の4辺は、ちょうどサンディングディスクを囲むことができる
。まずサンディングディスクを含むビデオに対してフレーム抽出を行い、後続の画像処理
の計算量を減少させるために、本例では、3フレームごとに一枚の画像を切り取り、そし
て固定のフォルダに記憶する。フォルダにおける一枚目の画像に対して、従来のfast
er rcnnアルゴリズムを用いてサンディングディスクの識別を行い、収集したデー
タをMatlab2020bにおけるimage labeler機能でマーキングし、
faster rcnnでサンディングディスクの大きさを識別した結果は、
図2に示す
。
【0010】
2-1-2)画像でのサンディングディスクの位置の測位:
サンディングディスクが初期位置にある時の画像をfaster rcnnで識別した
後、矩形ブロックの位置及び大きさを得、この矩形ブロックの上縁を境界線として、全て
の画像を上下の二つの部分に分け、本例では、下半部分の画像の左上角から始まり、この
前に決定された矩形ブロックを一定のステップサイズで画像全体に移動し、移動するたび
に矩形ブロック内の内容を切り取り、ブロック内の輝度平均値を計算する。サンディング
ディスク上の白色部分の輝度が高いため、輝度平均値の高いサンプリング矩形ブロックが
位置する位置は、サンディングディスクが位置する位置である。
【0011】
画像には、輝度がサンディングディスクよりも高い又は差の少ない背景物体が含まれる
場合、本例では、平均値に基づく背景減算法を採用して処理を行う:ビデオの最後の数秒
の画像を取り、ビデオにサンディングディスクの存在が全くないため、ビデオにおける最
後の10フレームの画像の平均値を取って背景画像とすることができ、サンディングディ
スクを含む画像から背景画像を減算すると、画像における背景部分は、減算後にほぼ0に
なり、そして減算後の画像に対して、この前の方法を利用してサンディングディスクが位
置する位置を判定する。
【0012】
2-1-3)閾値決定
図3に示すように、サンディングディスクが位置する位置を決定した後、サンディング
ディスクを元の画像から抽出する。
図4に示すように、そして分割されたサンディングデ
ィスク画像をRGBスペースからHSVスペースに変換し、輝度成分を抽出し、輝度棒グ
ラフを確立する。本発明例では、クラス間最大分散法で閾値を決定し、そのアルゴリズム
過程として、
第一のステップにおいて、画像全体の輝度値をセットCとし、輝度値を二つのクラスに
分け、一クラスをセットC1とし、もう一クラスをセットC2とし、且つC1∩C2=0
で、C1∩C2=Cである。
【0013】
第二のステップにおいて、輝度値kを取り、[0,k-1]範囲内の輝度値を全てセッ
トC1内に入れ、残りの輝度値をセットC2内に入れる。セットC1内の輝度値の平均値
をm1とし、セットC1内の要素の数がセットC内の要素の数に占める割合をp1とし、
セットC2内の輝度値の平均値をm2とし、セットC2内の要素の数がセットC内の要素
の数に占める割合をp2とし、セットC内の輝度値の平均値をmとし、クラス間分散の計
算式をg=p1*(m1-m)^2 + p2*(m2-m)^2とする。
【0014】
第三のステップにおいて、輝度値kを0から255まで1つずつ取り、値を取るごとに
、対応するクラス間最大分散を計算する。最大のクラス間分散に対応するk値を255で
割ると、最後の閾値になる。
【0015】
閾値を決定した後、この閾値よりも高い輝度をすべて保持し、その他をすべて除去し、
そしてRGBスペースに変換し、サンディングディスク上の白色部分を得る。
【0016】
2-2)サンディングディスクの微細分割:サンディングディスクがほとんど見えない
時に、サンディングディスク上の白色部分を分割し、サンディングディスクの微細分割を
実現するために、本発明例では、以下の二つのステップを用いて実現される。
【0017】
2-2-1)サンディングディスクがほとんど見えなくなる時に、サンディングディス
クの分割閾値を決定し且つそれを分割する。
【0018】
図5に示すように、ステップ2-1)に基づいて、いずれか一つのサンディングディス
クビデオを切り取り、全ての切り取られた画像に対していずれもステップ2-1)の方法
を用いてその閾値を決定し、且つ各枚の画像閾値の大きさを折れ線図に作成する。
【0019】
まずサンディングディスクが非常にぼやけている時に、サンディングディスクが位置す
る矩形ブロックの位置を決定する。サンディングディスクは、臨界位置に非常にぼやけて
おり、もう少しの距離だけ下がると見えなくなるが、基準サンディングディスクの直径は
、20cmであり、この少しの距離は、サンディングディスクの直径よりも遥かに小さい
ため、サンディングディスク画像のホッピング点の前の画像のサンディングディスクが位
置する矩形ブロックの高さをhとし、幅をwとし、左上角の頂点座標を[x,y]とし、
[x,y]を起点として幅が1.6*wで、高さが1.6*hの矩形領域を区分すること
で、この後に、画像におけるサンディングディスクがいずれもこの矩形領域に現れること
を確保することができる。
【0020】
そして、閾値変化傾向を利用して閾値の大きさを決定する。閾値ホッピング点の前の閾
値データに対して線性フィッティングを行い、フィッティング曲線を用いてホッピング点
の後の閾値の大きさを予測し、予測値をホッピング点の後の画像の分割閾値とする。ホッ
ピング点の決定については、本例では、kmeansクラスタリング分析の方法を採用す
る。具体的な方法は、以下のとおりである。
【0021】
第一のステップにおいて、隣接点閾値の差分を求め、且つすべての差分に絶対値を取り
、
第二のステップにおいて、matlabが持参したkmeans関数を用いてこれらの
差分を分類し、二つのクラスに分け、
第三のステップにおいて、各クラス差分の平均値を計算し、平均値が大きいクラス差分
を取り、このクラス差分が最初に現れる位置がホッピング点の位置である。
【0022】
ホッピング点の位置を見つけ、
図6に示す元の閾値曲線、閾値差分曲線、閾値フィッテ
ィング曲線を作成する。
【0023】
2-2-2)平均値に基づく背景減算法を採用して臨界閾値を決定し、サンディングデ
ィスクが全く見えない時に、水面をサンディングディスクとして分割することを排除する
。
【0024】
本例は、さらに、平均値に基づく背景減算法を採用して処理を行い、背景画像を得るサ
ンディングディスクを元の画像から分割するたびに、対応する位置での背景画像も分割す
る。背景画像は、すべて水面であるため、その背景輝度値は、正規分布であり、その平均
値をuと、基準差をδと設定し、且つこの図の閾値の代わりにu+2δを用い、画像にお
いてサンディングディスクを完全に見えない時に、ほとんどの水面を分割しないことを確
保することができ、ステップ2-3)における臨界位置を判定に根拠を提供する。
【0025】
2-3)サンディングディスクの臨界位置の判定:分類ネットワークを使用してサンデ
ィングディスクの臨界位置を判定し、具体的なステップは、以下のとおりである。
【0026】
2-3-1)全てのサンディングディスクの白色部分の分割結果をいずれも統一された
寸法(本例では、160*160*3)にスケールし、本例では、Matlab2020
bのresnet18ネットワークを用いて分類ネットワークを構造し、サンディングデ
ィスクの分割結果を分類する。本例では、resnet18の入力の大きさを統一された
寸法(本例では、160*160*3)に修正し、ネットワークの各レイヤのパラメータ
は、表1に示す。
【0027】
2-3-2)より多くのシナリオのサンディングディスクビデオを収集し、分類ネット
ワークの訓練用のデータセットを製作し、本例では、データを一クラスがサンディングデ
ィスクありを表し、もう一クラスがサンディングディスクなしを表す二つのクラスに分け
、一部のデータセットの画像は、
図7に示す。
【0028】
2-3-3)訓練済みの分類ネットワークを用いてサンディングディスクの臨界位置を
判断する。
【0029】
2-3-4)サンディングディスクの臨界位置を取得した後、校正を行う。人の目とカ
メラとの透視距離には差があり、そして、現在、カメラの精度が高くなっているため、裸
眼判断との間には一定の誤差がある(実際には、人と人の判断距離は、人によって状態に
よって異なるため、基準を必要とし、カメラを基準とすると間違いなく比較的に客観的で
ある)が、この誤差は相対的に固定されており、ΔDとし、実際の臨界位置は、サンディ
ングディスクの臨界位置+ΔDである。
【0030】
3)量水標を識別し且つ量水標の示度を計算し、本例では、Deeplabv3+アル
ゴリズムを利用してこの位置での量水標に対して識別分割を行い、そして量水標上の文字
を抽出し、文字を分類し、最後に量水標の示度を計算し、透明度値を得る。具体的なステ
ップは、以下のとおりである。
【0031】
3-1)Deeplabv3+アルゴリズムを利用してこの位置での量水標に対して識
別分割を行い、具体的なステップは、以下のとおりである。
【0032】
3-1-1)データセットを構築し、本例では、120枚以上の量水標画像を訓練デー
タセットとして収集し、Matlab2020bが持参したimage labeler
機能でデータマーキングを行い、一部の量水標画像及びマーキング結果は、
図8に示す。
【0033】
3-1-2)Deeplabv3+を用いてネットワーク訓練を行い、
3-1-3)訓練済みのDeeplabv3+を用いて量水標分割を行う。
【0034】
3-2)量水標上の文字を抽出し、具体的に以下のとおりである。
【0035】
3-2-1)量水標の傾斜校正を行う、
最小二乗推定を利用してDeeplabv3+分割の結果に対して傾斜校正を行い、そ
の計算式は、式(1)のように示す。
【0036】
(1)
量水標の左側又は右側の縁上の点の座標を(xi,yi)と設定し、ここでxiは、横
座標を表し、yi縦座標を表し、i∈[1,n]であり、量水標の傾斜傾きを計算する。
【0037】
3-2-2)校正後の量水標の縁位置を決定し、そして元の画像から量水標を分割し、
3-2-3)分割された量水標に対して転置及びミラーリングを行い、右に90度回転
させ、水平な量水標に変え、
3-2-4)matlabのim2bw関数を用いて、分割された量水標に対して二値
化を行い、二値化後の画像を反転させ、腐食アルゴリズムを用いて文字と文字と間の接続
を切断し、
3-2-5)matlabが持参したregionprops()関数を用い、全ての
文字を矩形ブロックでマーキングし、具体的に
図9に示し、
3-2-6)kmeansクラスタリング分析を利用し、大きい文字と小さい文字を分
け、
上記操作の後、本例で取得しようとする有効文字(比較的に大きい文字)は、依然とし
て画像に保持されるが、またいくつかの小さい文字は、腐食され又は保持される。本例で
は、kmeansクラスタリングアルゴリズムを利用して大きい文字と小さい文字を分け
、具体的なステップは、以下のとおりである。
【0038】
第一のステップにおいて、文字を囲む矩形ブロックの面積を計算する。
【0039】
第二のステップにおいて、matlabのkmeans()関数を用い、上記矩形ブロ
ック面積に対してクラスタリング分析を行い、二つのクラスに分ける。
【0040】
第三のステップにおいて、各クラスの面積平均値を計算し、平均値が大きいクラスが大
きい文字であり、且つそれらを分割し、クラスタリングして得られた大きい文字は、
図1
0に示す。
【0041】
3-3)量水標文字を分類し、本例では、CNN分類ネットワークを構造して量水標文
字を分類し、Matlab2020bのresnet18ネットワークを分類器として用
い、合計10個のクラスを設定し、0から9までの各数字は、一つのクラスに属する。本
例では、matlabが持参した数字文字データセットを採用し、データセット内の全て
の画像に対して二値化を行い、且つ64*64*1の大きさにスケールする。
【0042】
3-4)量水標の示度を計算し、透明度値を得、具体的な説明は、以下のとおりである
。
【0043】
水平な量水標に対して、数十番目の目盛りの位置は、各非0数字とその右側の隣接する
数字0との間にあり、例えば、目盛り70の位置は、文字7とその右側の文字0との間に
ある。非0数字をkと設定し、数字kの右縁位置をx_right(k)とし、数字kの
右側の隣接する数字0の左縁位置をx_left(k)とすると、数十番目の目盛りの位
置x(k)の計算式は、(2)のように示す。
【0044】
(2)
量水標上の非ゼロの最小数字をiとすると、比値関係に基づいて得られる量水標の示度
計算式は、(3)のように示す。
【0045】
得られる量水標の示度計算式は、(3)のように示す。
【0046】
【0047】
従来技術と比べて、本発明の有益なところは、以下のとおりである。
【0048】
上記技術案は、画像処理に基づくスマートサンディングディスク及び量水標の識別技術
を提案し、従来のサンディングディスクを画像処理、深さ学習などの技術に組み合わせ、
水体の透明度を正確に測定し、人工測定過程において主観的と客観的要素による示度に誤
差があり、円盤位置の判断が不正確である欠点を克服する。この方法は、正確率が高く、
数値が安定して客観的で、人の主観的な要素の影響を受けず、高い応用価値を持っている
。
【図面の簡単な説明】
【0049】
【
図1】本発明の実施例にける、マシン視覚に基づく透明度検出方法のフローチャートである。
【
図2】本発明の実施例にける、faster rcnnを採用してサンディングディスクの大きさを識別する結果図である。
【
図3】本発明の実施例における分割されたサンディングディスクである。
【
図4】本発明の実施例における分割されたサンディングディスクの輝度棒グラフである。
【
図6】本発明の実施例の元の閾値曲線、閾値差分曲線、閾値フィッティング曲線の図である。
【
図7】本発明の実施例にける、resnet18の一部のデータセットの概略図である。
【
図8】本発明の実施例にける、一部の量水標及びそのマーキング結果の画像である。
【
図9】本発明の実施例にける、量水標画像の処理結果であり、(a)は、水平な量水標画像であり、(b)は、二値化、反転、腐食後の量水標画像である。
【
図10】本発明の実施例にける、クラスタリングして得られた大きい文字である。
【発明を実施するための形態】
【0050】
本発明の目的、技術案と利点をより明瞭にするために、以下、実施例及びその図面を結
び付けて本発明についてさらに説明する。明らかに、記述された実施例は、本発明の一部
の実施例であり、すべての実施例ではない。記述された実施例に基づき、当業者が創造的
な労力を払わない前提で、得られたすべての他の実施例は、いずれも本発明の保護範囲に
属する。
【0051】
特に定義されない限り、本発明で使用される技術用語又は科学的用語は、本発明の属す
る分野における当業者に理解される一般的な意味であるべきである。本発明で使用される
「含む」又は「包含する」などの類似している言葉は、この言葉の前に現れた素子又は物
体がこの言葉の後に現れて列挙された素子又は物体及びその同等物を含み、他の素子又は
物体を排除しないことを意味する。「接続」又は「繋がり」などの類似している言葉は、
物理的または機械的な接続に限定されるものではなく、直接的であれ間接的であれ、電気
的な接続を含むことができる。「上」、「下」、「左」、「右」などは相対位置関係を表
すためにのみ使用され、記述対象の絶対位置が変化すると、この相対位置関係もそれに応
じて変化する可能性がある。
【0052】
実施例
図1~
図10を参照すると、
本発明の目的は、マシン視覚に基づく透明度検出方法を提供することであり、本発明例
のカメラは、一つのカメラであってもよく、二つのカメラであってもよく、水質の透明度
が比較的に浅い場合、一つのカメラを採用することができる。水質の透明度が比較的に深
く、一つのカメラがサンディングディスク及び量水標の移動を同時に追跡撮影できない場
合、二つのカメラを採用することができ、そのうちの一方は、サンディングディスクを撮
影し、他方は、量水標を撮影し、二つのカメラは、同時に撮影し、人がサンディングディ
スクで水体の透明度を測定する動作(サンディングディスクを見ながら量水標を見る)を
模倣し、画面が比較的に明瞭な量水標ビデオ及びサンディングディスク昇降ビデオを取得
し、撮影したビデオをコンピュータにクラウド経由でまたは直接に転送して処理させる。
上記目的を実現するために、本発明例は、二つの側面の内容を含み、一つの側面は、サン
ディングディスクの臨界位置の判定であり、もう一つの側面は、量水標識別であり、その
フローチャートは、
図1に示され、具体的にステップは、以下のステップを含む。
【0053】
ステップS100において、サンディングディスクを操作して水体の透明度測定を開始
し、カメラを開いて撮影し、
ステップS200において、サンディングディスクがちょうど見えない時の位置である
サンディングディスクの臨界位置を判定する。前記ステップS200は、サンディングデ
ィスクの初期分割、サンディングディスクの微細分割及びサンディングディスクの臨界位
置の判定などのステップを含み、具体的に以下のとおりである。
【0054】
ステップS210において、サンディングディスクの初期分割:ビデオ画像からサンデ
ィングディスク上の白色部分を分割し、具体的には、サンディングディスクの大きさの決
定、画像でのサンディングディスクの位置の測位及び閾値決定などのステップを含む。
【0055】
ステップS211において、サンディングディスクの大きさの決定:本例では、従来の
faster rcnnアルゴリズムを採用してサンディングディスクの大きさの識別を
行い、まずサンディングディスクを含むビデオに対してフレーム抽出を行い、後続の画像
処理の計算量を減少させるために、本例では、3フレームごとに一枚の画像を切り取り、
そして固定のフォルダに記憶する。フォルダにおける一枚目の画像に対して、従来のfa
ster rcnnアルゴリズムを用いてサンディングディスクの識別を行い、収集した
データをMatlab2020bにおけるimage labeler機能でマーキング
し、faster rcnnでサンディングディスクの大きさを識別した結果は、
図2に
示す。
【0056】
ステップS212において、画像でのサンディングディスクの位置の測位:
サンディングディスクが初期位置にある時の画像をfaster rcnnで識別した
後、矩形ブロックの位置及び大きさを得、この矩形ブロックの上縁を境界線として、全て
の画像を上下の二つの部分に分け、サンディングディスクは、通常、下半部分の画像にの
み現れて、下半部分の画像において、本例では、画像の左上角から始まり、この前に決定
された矩形ブロックを一定のステップサイズで画像全体に移動し、移動するたびに矩形ブ
ロック内の内容を切り取り、ブロック内の輝度平均値を計算し、輝度平均値の高いサンプ
リング矩形ブロックが位置する位置は、サンディングディスクが位置する位置である。
【0057】
画像には、輝度がサンディングディスクよりも高い又は差の少ない背景物体が含まれる
場合、本例では、平均値に基づく背景減算法を採用して処理を行う:ビデオの最後の数秒
の画像を取り、ビデオにサンディングディスクの存在が全くないため、ビデオにおける最
後の10フレームの画像の平均値を取って背景画像とすることができ、サンディングディ
スクを含む画像から背景画像を減算すると、画像における背景部分は、減算後にほぼ0に
なり、そして減算後の画像に対して、この前の方法を利用してサンディングディスクが位
置する位置を判定する。
【0058】
ステップS213において、閾値決定:
図3に示すように、サンディングディスクが位置する位置を決定した後、サンディング
ディスクを元の画像から抽出する。
図4に示すように、そして分割されたサンディングデ
ィスク画像をRGBスペースからHSVスペースに変換し、輝度成分を抽出し、輝度棒グ
ラフを確立する。本発明例では、クラス間最大分散法で閾値を決定し、そのアルゴリズム
過程として、
第一のステップにおいて、画像全体の輝度値をセットCとし、輝度値を二つのクラスに
分け、一クラスをセットC1とし、もう一クラスをセットC2とし、且つC1∩C2=0
で、C1∩C2=Cである。
【0059】
第二のステップにおいて、輝度値kを取り、[0,k-1]範囲内の輝度値を全てセッ
トC1内に入れ、残りの輝度値をセットC2内に入れる。セットC1内の輝度値の平均値
をm1とし、セットC1内の要素の数がセットC内の要素の数に占める割合をp1とし、
セットC2内の輝度値の平均値をm2とし、セットC2内の要素の数がセットC内の要素
の数に占める割合をp2とし、セットC内の輝度値の平均値をmとし、クラス間分散の計
算式をg=p1*(m1-m)^2 + p2*(m2-m)^2とする。
【0060】
第三のステップにおいて、輝度値kを0から255まで1つずつ取り、値を取るごとに
、対応するクラス間最大分散を計算する。最大のクラス間分散に対応するk値を255で
割ると、最後の閾値になる。
【0061】
閾値を決定した後、この閾値よりも高い輝度をすべて保持し、その他をすべて除去し、
そしてRGBスペースに変換し、サンディングディスク上の白色部分を得る。
【0062】
ステップS220において、サンディングディスクの微細分割:サンディングディスク
がほとんど見えない時に、サンディングディスク上の白色部分を分割し、サンディングデ
ィスクの微細分割を実現するために、本発明例は、以下の二つのステップを用いて実現さ
れる。
【0063】
ステップS221において、サンディングディスクがほとんど見えなくなる時に、サン
ディングディスクの分割閾値を決定し且つそれを分割し、
図5に示すように、ステップS210に基づいて、いずれか一つのサンディングディス
クビデオを切り取り、全ての切り取られた画像に対していずれもステップS210の方法
を用いてその閾値を決定し、且つ各枚の画像閾値の大きさを折れ線図に作成する。
【0064】
まずサンディングディスクが非常にぼやけている時に、サンディングディスクが位置す
る矩形ブロックの位置を決定する。サンディングディスクは、臨界位置に非常にぼやけて
おり、もう少しの距離だけ下がると見えなくなるが、サンディングディスク画像のホッピ
ング点の前の画像のサンディングディスクが位置する矩形ブロックの高さをhとし、幅を
wとし、左上角の頂点座標を[x,y]とし、[x,y]を起点として幅が1.6*wで
、高さが1.6*hの矩形領域を区分することで、この後に、画像におけるサンディング
ディスクがいずれもこの矩形領域に現れることを確保することができる。
【0065】
そして、閾値変化傾向を利用して閾値の大きさを決定する。閾値ホッピング点の前の閾
値データに対して線性フィッティングを行い、フィッティング曲線を用いてホッピング点
の後の閾値の大きさを予測し、予測値をホッピング点の後の画像の分割閾値とする。ホッ
ピング点の決定については、本例では、kmeansクラスタリング分析の方法を採用す
る。具体的な方法は、以下のとおりである。
【0066】
第一のステップにおいて、隣接点閾値の差分を求め、且つすべての差分に絶対値を取り
、
第二のステップにおいて、matlabが持参したkmeans関数を用いてこれらの
差分を分類し、二つのクラスに分け、
第三のステップにおいて、各クラス差分の平均値を計算し、平均値が大きいクラス差分
を取り、このクラス差分が最初に現れる位置がホッピング点の位置である。
【0067】
ホッピング点の位置を見つけ、
図6に示す元の閾値曲線、閾値差分曲線、閾値フィッテ
ィング曲線を作成する。
【0068】
ステップS222において、平均値に基づく背景減算法を採用して臨界閾値を決定し、
サンディングディスクが全く見えない時に、水面をサンディングディスクとして分割する
ことを排除する。
【0069】
本例は、平均値に基づく背景減算法を採用して処理を行い、背景画像を得る。サンディ
ングディスクを元の画像から分割するたびに、対応する位置での背景画像も分割する。背
景画像は、すべて水面であるため、その背景輝度値は、正規分布であり、その平均値をu
と、基準差をδと設定し、且つこの図の閾値の代わりにu+2δを用い、ほとんどの水面
を分割することなく、ステップS230における臨界位置の判定に根拠を提供する。
【0070】
ステップS230において、サンディングディスクの臨界位置の判定:分類ネットワー
クを使用してサンディングディスクの臨界位置を判定し、具体的なステップは、以下のと
おりである。
【0071】
ステップS231において、全てのサンディングディスクの白色部分の分割結果をいず
れも統一された寸法(本例では、160*160*3)にスケールし、本例では、Mat
lab2020bのresnet18ネットワークを用いて分類ネットワークを構造し、
サンディングディスクの分割結果を分類する。本例では、resnet18の入力の大き
さを統一された寸法(本例では、160*160*3)に修正し、ネットワークの各レイ
ヤのパラメータは、表1に示す。
【0072】
【0073】
ステップS232において、より多くのシナリオのサンディングディスクビデオを収集
し、分類ネットワークの訓練用のデータセットを製作し、本例では、データを一クラスが
サンディングディスクありを表し、もう一クラスがサンディングディスクなしを表す二つ
のクラスに分け、一部のデータセットの画像は、
図7に示す。
【0074】
ステップS233において、訓練済みの分類ネットワークを用いてサンディングディス
クの臨界位置を判断する。
【0075】
ステップS234において、サンディングディスクの臨界位置を取得した後、校正を行
う。実際の臨界位置は、サンディングディスクの臨界位置+ΔDであり、本例では、ΔD
=-5cmである。
【0076】
ステップS300において、量水標を識別し且つ量水標の示度を計算し、本例では、D
eeplabv3+アルゴリズムを利用してこの位置での量水標に対して識別分割を行い
、そして量水標上の文字を抽出し、文字を分類し、最後に量水標の示度を計算し、透明度
値を得る。具体的なステップは、以下のとおりである。
【0077】
ステップS310において、Deeplabv3+アルゴリズムを利用してこの位置で
の量水標に対して識別分割を行い、具体的なステップは、以下のとおりである。
【0078】
ステップS311において、データセットを構築し、本例では、120枚以上の量水標
画像を訓練データセットとして収集し、Matlab2020bが持参したimage
labeler機能を用いてデータマーキングを行い、一部の量水標画像及びマーキング
結果は、
図8に示す。
【0079】
ステップS312において、Deeplabv3+を用いてネットワーク訓練を行い、
ステップS313において、訓練済みのDeeplabv3+を用いて量水標分割を行
う。
【0080】
ステップS320において、量水標上の文字を抽出し、具体的に以下のとおりである。
【0081】
ステップS321において、量水標の傾斜校正を行い、最小二乗推定を利用してDee
plabv3+分割の結果に対して傾斜校正を行い、その計算式は、式(1)のように示
す。
【0082】
(1)
量水標の左側又は右側の縁上の点の座標を(xi,yi)と設定し、i∈[1,n]で
あり、量水標の傾斜傾きを計算する。
【0083】
ステップS322において、校正後の量水標の縁位置を決定し、そして元の画像から量
水標を分割し、
ステップS323において、分割した量水標に対して転置及びミラーリングを行い、右
に90度回転させ、水平な量水標に変え、
ステップS324において、matlabのim2bw関数を用いて、分割された量水
標に対して二値化を行い、二値化後の画像を反転させ、腐食アルゴリズムを用いて文字と
文字と間の接続を切断し、
ステップS325において、matlabが持参したregionprops()関数
を用い、全ての文字を矩形ブロックでマーキングし、具体的に
図9に示し、
ステップS326において、kmeansクラスタリング分析を利用し、大きい文字と
小さい文字を分け、
上記操作の後、本例で取得しようとする有効文字(比較的に大きい文字)は、依然とし
て画像に保持されるが、またいくつかの小さい文字は、腐食され又は保持される。本例で
は、kmeansクラスタリングアルゴリズムを利用して大きい文字と小さい文字を分け
、具体的なステップは、以下のとおりである。
【0084】
第一のステップにおいて、文字を囲む矩形ブロックの面積を計算する。
【0085】
第二のステップにおいて、matlabのkmeans()関数を用い、上記矩形ブロ
ック面積に対してクラスタリング分析を行い、二つのクラスに分ける。
【0086】
第三のステップにおいて、各クラスの面積平均値を計算し、平均値が大きいクラスが大
きい文字であり、且つそれらを分割し、クラスタリングして得られた大きい文字は、
図1
0に示す。
【0087】
ステップS330において、量水標文字を分類し、本例では、CNN分類ネットワーク
を構造して量水標文字を分類し、Matlab2020bのresnet18ネットワー
クを分類器として用い、合計10個のクラスを設定し、0から9までの各数字は、一つの
クラスに属する。本例では、matlabが持参した数字文字データセットを採用し、デ
ータセット内の全ての画像に対して二値化を行い、且つ64*64*1の大きさにスケー
ルする。
【0088】
ステップS340において、量水標の示度を計算し、透明度値を得、具体的な説明は、
以下のとおりである。
【0089】
水平な量水標に対して、数十番目の目盛りの位置は、各非0数字とその右側の隣接する
数字0との間にあり、例えば、目盛り70の位置は、文字7とその右側の文字0との間に
ある。非0数字をkと設定し、数字kの右縁位置をx_right(k)とし、数字kの
右側の隣接する数字0の左縁位置をx_left(k)とすると、数十番目の目盛りの位
置x(k)の計算式は、(2)のように示す。
【0090】
(2)
量水標上の非ゼロの最小数字をiとすると、比値関係に基づいて得られる量水標の示度
計算式は、(3)のように示す。
【0091】
(3)
ステップS400において、出力して表示する。
【国際調査報告】