OpenCV - まとめ「画像処理-2」

1. 画像勾配ソーベル演算子

dst = cv2.Sobel(src, ddepth, dx, dy, ksize)
  • d Depth: 画像の深度。出力イメージの深度 (データ型として理解できます)、-1 は元のイメージと同じ深度を意味します。
  • dx と dy はそれぞれ水平方向と垂直方向を表します。組み合わせが dx=1、dy=0 の場合は x 方向の一次微分値を求め、組み合わせが dx=0、dy=1 の場合は y 方向の一次微分値を求めます(両方とも 1 の場合)。時間が経つと、通常は望む結果が得られません)
  • ksize は Sobel オペレーターのサイズです。オプションのパラメーター) Sobel オペレーターのサイズは 1、3、5、または 7 である必要があります。デフォルトは 3 です。X 方向と Y 方向の一次導関数を計算する場合、コンボリューション カーネルは次のとおりです。
  • スケール: (オプションのパラメータ) 勾配計算によって取得された値を拡大するためのスケール係数。通常、その効果により勾配マップが明るくなります。デフォルトは 1 です。
  • デルタ: (オプションのパラメータ) ターゲット画像を多次元配列に保存する前に、各ピクセルの値をデルタずつ増やすことができます。デフォルトは 0 です。
  • borderType: (オプションのパラメータ) は、画像がフィルタリングされる (畳み込まれた) ときにエッジ ピクセルがどのように処理されるかを決定します。デフォルトは BORDER_DEFAULT です。

2. 画像勾配-Scharr 演算子 (Scharr 演算子)

scharr 演算子は sobel 演算子を改良したものです。

3. 画像勾配ラプラシアン演算子

エッジを見つけるために演算子が使用されていることが理解できます。

4. キャニーエッジ検出

キャニーエッジ検出

    1.    使用高斯滤波器,以平滑图像,滤除噪声。
      
    1.    计算图像中每个像素点的梯度强度和方向。
      
    1.    应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。
      
    1.    应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。
      
    1.    通过抑制孤立的弱边缘最终完成边缘检测。
      
img=cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)

v1=cv2.Canny(img,80,150)
v2=cv2.Canny(img,50,100)

res = np.hstack((v1,v2))
cv_show(res,'res')

5. イメージピラミッド

5.1 ガウスピラミッド

アップサンプリングはグラフを拡大すること、ダウンサンプリングはグラフを縮小することです。

up=cv2.pyrUp(img)
up_down=cv2.pyrDown(up)
cv_show(img-up_down,'img-up_down')

5.2 ラプラシアンピラミッド

down=cv2.pyrDown(img)
down_up=cv2.pyrUp(down)
l_1=img-down_up
cv_show(l_1,'l_1')

6. 画像概要

cv2.findContours(img,mode,method)
モード: 輪郭取得モード

  • RETR_EXTERNAL : 最も外側の輪郭のみを取得します。
  • RETR_LIST: すべての輪郭を取得し、リンクされたリストに保存します。
  • RETR_CCOMP: すべての輪郭を取得し、それらを 2 つのレイヤーに編成します。最上層は各部品の外側の境界であり、2 番目の層はキャビティの境界です。
  • RETR_TREE: すべての輪郭を取得し、ネストされた輪郭の階層全体を再構築します。

手法:輪郭近似法

  • CHAIN_APPROX_NONE: アウトラインは Freeman チェーンコードとして出力され、他のすべてのメソッドはポリゴン (頂点のシーケンス) を出力します。
  • CHAIN_APPROX_SIMPLE: 水平、垂直、斜めの部分を圧縮します。つまり、関数はその端の部分のみを保持します。

おすすめ

転載: blog.csdn.net/guoguozgw/article/details/128810048