20250422/佐藤綺羅/2値化処理
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[log/20250422/佐藤綺羅]]
*2値化処理 [#y27351c6]
**cv2.threshold関数 [#wb0a0c9f]
2値化は画像を白黒の2つの色に変換する処理であり、物体の抽出に用いられる。~
OpenCVではcv2.theshold関数を用いることで、画像の2値化処理が行える。
thresholded = cv2.function(入力画像, thresh, maxval, type)
引数は以下の通り。
|入力画像(必須)|処理対象の画像。グレー画像のみに対応。|
|thresh(必須)|閾値。|
|maxval(必須)|閾値を超えた場合に設定される値。基本は255だが、1にするときもある。|
|type(必須)|閾値処理のタイプ。|
typeには、以下の値を指定できる。
|cv2.THRESH_BINARY|画素の輝度値が閾値を超える場合は maxval、そうでない場合は 0 に設定。|
|cv2.THRESH_BINARY_INV|画素の輝度値が閾値を超える場合は 0、そうでない場合は maxval に設定。|
|cv2.THRESH_TRUNC|画素の輝度値が閾値を超える場合は閾値に、そうでない場合はそのままの値に設定。|
|cv2.THRESH_TOZERO|画素の輝度値が閾値を超える場合はそのままの値に、そうでない場合は 0 に設定。|
|cv2.THRESH_TOZERO_INV|画素の輝度値が閾値を超える場合は 0 に、そうでない場合はそのままの値に設定。|
|cv2.THRESH_OTSU|大津の二値化。画像のヒストグラム解析を用いて自動的に閾値を決定する手法。|
|cv2.THRESH_TRIANGLE|トライアングル アルゴリズムにより自動的に閾値を決定する手法。|
戻り値は以下の2つの要素からなるタプル。
|retval|実際に適用された閾値。処理中にcv2.THRESH_OTSUを使って自動的に閾値が計算された場合、この値に計算された閾値が格納される。通常の手動の場合は、引数で指定した閾値そのものがretvalとして返る。|
|thresh|閾値処理が適用された結果の画像。ピクセルの値が閾値を超えると、指定したmaxvalに設定され、それ以下の場合は0に設定された画像。|
以下にプログラムの実行例を示す。
取り込んだ画像~
&attachref(neko.jpeg);
コード
#code(python){{
#!/usr/bin/python
import cv2
img = cv2.imread("neko.jpeg")
gimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, g2img = cv2.threshold(gimg, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow("neko",g2img)
cv2.waitKey(0)
}}
実行結果~
&attachref(neko_threshold.png);
_, g2img = ...と記述することで、戻り値の第一要素retvalを参照できなくすることが可能。~
こうすることでg2imgを関数に代入しても、画像情報に直接アクセスできる。~
また、typeはcv2.THRESH_BINARY + cv2.THRESH_OTSUのように複数指定可能。~
この場合は、自動的に閾値を決定した後、画素の輝度値が閾値を超える場合は maxval、そうでない場合は 0 に設定する処理となる。~
終了行:
[[log/20250422/佐藤綺羅]]
*2値化処理 [#y27351c6]
**cv2.threshold関数 [#wb0a0c9f]
2値化は画像を白黒の2つの色に変換する処理であり、物体の抽出に用いられる。~
OpenCVではcv2.theshold関数を用いることで、画像の2値化処理が行える。
thresholded = cv2.function(入力画像, thresh, maxval, type)
引数は以下の通り。
|入力画像(必須)|処理対象の画像。グレー画像のみに対応。|
|thresh(必須)|閾値。|
|maxval(必須)|閾値を超えた場合に設定される値。基本は255だが、1にするときもある。|
|type(必須)|閾値処理のタイプ。|
typeには、以下の値を指定できる。
|cv2.THRESH_BINARY|画素の輝度値が閾値を超える場合は maxval、そうでない場合は 0 に設定。|
|cv2.THRESH_BINARY_INV|画素の輝度値が閾値を超える場合は 0、そうでない場合は maxval に設定。|
|cv2.THRESH_TRUNC|画素の輝度値が閾値を超える場合は閾値に、そうでない場合はそのままの値に設定。|
|cv2.THRESH_TOZERO|画素の輝度値が閾値を超える場合はそのままの値に、そうでない場合は 0 に設定。|
|cv2.THRESH_TOZERO_INV|画素の輝度値が閾値を超える場合は 0 に、そうでない場合はそのままの値に設定。|
|cv2.THRESH_OTSU|大津の二値化。画像のヒストグラム解析を用いて自動的に閾値を決定する手法。|
|cv2.THRESH_TRIANGLE|トライアングル アルゴリズムにより自動的に閾値を決定する手法。|
戻り値は以下の2つの要素からなるタプル。
|retval|実際に適用された閾値。処理中にcv2.THRESH_OTSUを使って自動的に閾値が計算された場合、この値に計算された閾値が格納される。通常の手動の場合は、引数で指定した閾値そのものがretvalとして返る。|
|thresh|閾値処理が適用された結果の画像。ピクセルの値が閾値を超えると、指定したmaxvalに設定され、それ以下の場合は0に設定された画像。|
以下にプログラムの実行例を示す。
取り込んだ画像~
&attachref(neko.jpeg);
コード
#code(python){{
#!/usr/bin/python
import cv2
img = cv2.imread("neko.jpeg")
gimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, g2img = cv2.threshold(gimg, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow("neko",g2img)
cv2.waitKey(0)
}}
実行結果~
&attachref(neko_threshold.png);
_, g2img = ...と記述することで、戻り値の第一要素retvalを参照できなくすることが可能。~
こうすることでg2imgを関数に代入しても、画像情報に直接アクセスできる。~
また、typeはcv2.THRESH_BINARY + cv2.THRESH_OTSUのように複数指定可能。~
この場合は、自動的に閾値を決定した後、画素の輝度値が閾値を超える場合は maxval、そうでない場合は 0 に設定する処理となる。~
ページ名: