(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-08
(45)【発行日】2024-03-18
(54)【発明の名称】マシン視覚に基づく透明度検出方法
(51)【国際特許分類】
G06T 7/00 20170101AFI20240311BHJP
G01N 21/59 20060101ALI20240311BHJP
【FI】
G06T7/00 350C
G01N21/59 C
(21)【出願番号】P 2022567434
(86)(22)【出願日】2021-11-16
(86)【国際出願番号】 CN2021130867
(87)【国際公開番号】W WO2022247162
(87)【国際公開日】2022-12-01
【審査請求日】2022-11-04
(31)【優先権主張番号】202110579783.3
(32)【優先日】2021-05-26
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】505072650
【氏名又は名称】浙江大学
【氏名又は名称原語表記】ZHEJIANG UNIVERSITY
(74)【代理人】
【識別番号】100216471
【氏名又は名称】瀬戸 麻希
(72)【発明者】
【氏名】林峰
(72)【発明者】
【氏名】金倩楠
(72)【発明者】
【氏名】甘力博
【審査官】片岡 利延
(56)【参考文献】
【文献】中国特許出願公開第109406523(CN,A)
【文献】特開2012-127758(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G01N 21/59
(57)【特許請求の範囲】
【請求項1】
マシン視覚に基づく透明度検出方法であって、
1)
透明度板を操作して水体の透明度測定を開始し、カメラを開いて撮影するステップ
と、
2)
透明度板の臨界位置を判定するステップと、
3)量水標を識別し且つ量水標の示度を計算するステップと、
4)出力して表示するステップとを含み、
ここで、前記ステップ2)に記載の
透明度板の臨界位置を判定することは、
透明度板の
初期分割、
透明度板の微細分割及び
透明度板の臨界位置の判定を含み、具体的には、以下
のステップを含み
2-1)
透明度板の初期分割:ビデオ画像から前記
透明度板上の白色部分を分割し、
透
明度板の大きさの決定、画像での
透明度板の位置の測位及び閾値決定を含み、
2-1-1)
透明度板の大きさの決定:faster rcnnアルゴリズムを採用し
て
透明度板の大きさの識別を行い、前記
透明度板の大きさは、矩形の面積を指し、前記矩
形の4辺は、ちょうど前記
透明度板を囲むことができ、まず
透明度板を含むビデオに対し
てフレーム抽出を行い、3フレームごとに一枚の画像を切り取り、そして固定のフォルダ
に記憶し、フォルダにおける一枚目の画像に対して、前記faster rcnnアルゴ
リズムを用いて
透明度板の識別を行い、収集したデータをMatlab2020bにおけ
るimage labeler機能でマーキングし、
2-1-2)画像での
透明度板の位置の測位:前記
透明度板が初期位置にある時の画像
を前記faster rcnnアルゴリズムで識別した後、矩形ブロックの位置及び大き
さを得、この矩形ブロックの上縁を境界線として、前記画像を上下の二つの部分に分け、
下半部分の画像の左上角から始まり、この前に決定された矩形ブロックを一定のステップ
サイズで画像全体に移動し、移動するたびに矩形ブロック内の内容を切り取り、ブロック
内の輝度平均値を計算し、輝度平均値の高いサンプリング矩形ブロックが位置する位置は
、前記
透明度板が位置する位置であり、
前記画像には、輝度が前記
透明度板よりも高い又は差の少ない背景物体が含まれる場合
、ビデオにおける最後の10フレームの画像の平均値を取って背景画像とし、前記
透明度
板を含む画像から背景画像を減算すると、画像における背景部分は、減算後にほぼ0にな
り、そして減算後の画像に対して、前記ステップ2-1-2)における方法を利用して
透
明度板が位置する位置を判定し、
2-1-3)閾値決定:前記
透明度板が位置する位置を決定した後、前記
透明度板を元
の画像から抽出し、そして分割された
透明度板画像をRGBスペースからHSVスペース
に変換し、輝度成分を抽出し、輝度棒グラフを確立し、クラス間最大分散法を用いて閾値
を決定し、そのアルゴリズム過程として、
第一のステップにおいて、前記
透明度板画像全体の輝度値をセットCとし、輝度値を二
つのクラスに分け、一クラスをセットC1とし、もう一クラスをセットC2とし、且つC
1∩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深さ学習ネッ
トワークにより出力された透明度板の画像識別結果に基づき、縁計算方法を用いてターゲ
ット水域の現在の第二の水体の透明度情報を取得するが、この方法は、水体検出センシン
グコンポーネントにより収集されたターゲット水域の現在の少なくとも一つの第一の水体
の透明度情報及び少なくとも一つの第一の水位情報を取得する必要がある。公開番号がC
N 109784259 Aの中国特許文献は、画像識別に基づく水体の透明度スマート
識別方法及び透明度板コンポーネントを開示し、この方法は、透明度板が浸漬されたター
ゲット水域画像を予め設定される画像識別モデルに入力し、且つこの画像識別モデルの出
力を前記透明度板の画像識別結果とするが、この方法は、二つの色が互い違いになった作
業面を含む複数の円盤を必要とし、且つ各前記円盤が前記柱体の周りに螺旋階段式で固定
して配置されている。公開番号がCN110672563Aの中国特許文献は、知能水環
境の透明度画像に適用される識別検出方法を開示し、この方法は、水質監視点に透明度板
つきの特製のスクリュー部材を垂直に固定する必要がある。上記方法は、往々にしてデー
タを事前に取得する必要があり又は特定装置を必要とすり、操作が比較的に複雑で、実用
性が強くない。
【0004】
コンピュータ視覚技術の巨大な発展に伴い、コンピュータ視覚技術を利用して画像デー
タを処理すると、主客観要素の影響を効果的に回避でき、正確性が高く、アプリケーショ
ンシナリオが広く、汎化能力が強いという利点がある。本例では、深さ学習、画像処理技
術を透明度板測定技術に組み合わせ、水体の透明度の測定に用いるマシン視覚に基づくス
マート画像処理識別技術を提案する。
【発明の概要】
【0005】
本発明の目的は、マシン視覚に基づく透明度検出方法を提供することであり、本発明例
では、カメラは、一つのカメラであってもよく、二つのカメラであってもよく、水質の透
明度が比較的に浅い場合、一つのカメラを採用することができる。水質の透明度が比較的
に深く、一つのカメラが透明度板及び量水標の移動を同時に追跡撮影できない場合、二つ
のカメラを採用することができ、そのうちの一方は、透明度板を撮影し、他方は、量水標
を撮影し、二つのカメラは、同時に撮影し、人が透明度板で水体の透明度を測定する動作
(透明度板を見ながら量水標を見る)を模倣し、画面が比較的に明瞭な透明度板及び量水
標昇降ビデオを取得し、撮影したビデオをコンピュータにクラウド経由でまたは直接に転
送して処理させる。
【0006】
上記目的を実現するために、本発明例は、二つの側面の内容を含み、一つの側面は、
透
明度板の臨界位置の判定であり、もう一つの側面は、量水標識別であり、そのフローチャ
ートは、
図1に示され、具体的には、
1)
透明度板を操作して水体の透明度測定を開始し、カメラを開いて撮影するステップ
と、
2)
透明度板の臨界位置を判定するステップと、
3)量水標を識別し且つ量水標の示度を計算するステップと、
4)出力して表示するステップとを含む。
【0007】
ステップ2)では、透明度板の臨界位置を判定し、透明度板の臨界位置とは、透明度板
がちょうど見えない時の位置である。透明度板の初期分割、透明度板の微細分割及び透明
度板の臨界位置の判定などのステップを含み、具体的に以下のとおりである。
【0008】
2-1)透明度板の初期分割:ビデオ画像から透明度板上の白色部分を分割し、具体的
には、透明度板の大きさの決定、画像での透明度板の位置の測位及び閾値決定などのステ
ップを含む。
【0009】
2-1-1)
透明度板の大きさの決定:本例では、従来のfaster rcnnアル
ゴリズムを採用して
透明度板の大きさの識別を行い、
説明すべきこととして、ここでの大きさは、
透明度板の面積ではなく、矩形の面積であ
り、この矩形の4辺は、ちょうど
透明度板を囲むことができる。まず
透明度板を含むビデ
オに対してフレーム抽出を行い、後続の画像処理の計算量を減少させるために、本例では
、3フレームごとに一枚の画像を切り取り、そして固定のフォルダに記憶する。フォルダ
における一枚目の画像に対して、従来のfaster rcnnアルゴリズムを用いて
透
明度板の識別を行い、収集したデータをMatlab2020bにおけるimage l
abeler機能でマーキングし、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)にスケールし、本例では、Matlab2020bのresn
et18ネットワークを用いて分類ネットワークを構造し、透明度板の分割結果を分類す
る。本例では、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フレームごとに一枚の画像を切り取り、そして固定のフォルダに記憶する。フォ
ルダにおける一枚目の画像に対して、従来のfaster 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)にスケールし、本例では、Matlab202
0bの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において、出力して表示する。