Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan python untuk pengesanan tepi imej

Cara menggunakan python untuk pengesanan tepi imej

王林
王林ke hadapan
2023-06-03 21:22:012013semak imbas

Pengesanan Tepi

Tepi imej merujuk kepada set piksel dalam imej di mana skala kelabu piksel sekeliling yang menyatakan objek berubah langkah demi langkah.

Di persimpangan dua kawasan bersebelahan dengan skala kelabu yang berbeza dalam imej, mesti terdapat peralihan skala kelabu yang pantas, atau lompatan ia sepadan dengan kedudukan tepi setiap kawasan dalam imej dan tepi mengandungi kaya Maklumat intrinsik, seperti arah, sifat langkah, bentuk, dll., piksel di sepanjang tepi berubah perlahan-lahan, manakala piksel berserenjang dengan arah tepi berubah secara drastik.

Kebanyakan maklumat imej tertumpu pada tepi Setelah tepi ditentukan, pembahagian kawasan yang berbeza sebenarnya dicapai.

Operator pengesanan tepi

Pencarian tepi selalunya memerlukan bantuan beberapa operator pengesanan tepi Sesetengah daripada operator ini adalah berdasarkan terbitan tertib pertama dan sesetengahnya ialah operator pembezaan tertib kedua

.

Operator Roberts, operator Prewitt dan operator Sobel menyertakan templat dalam arah x dan y Setiap templat hanya sensitif kepada arah yang sepadan dan mempunyai output yang jelas dalam arah ini, manakala ia tidak sensitif terhadap arah yang lain berubah. Berikut ialah beberapa operator pembezaan tertib pertama biasa dan ciri-cirinya:

算子名称 特点
简单微分算子 对噪声敏感,对噪声具有一定放大作用
Roberts算子 去噪声作用小,边缘检测能力优于简单微分算子
Prewitt算子 能够有效抑制噪声的影响,同时能够检测边缘点
Sobel算子 得到的边缘较宽,噪声抑制效果更强
Canny算子 检测的边缘位置准确且边缘较窄

1. Operator Roberts

Cara menggunakan python untuk pengesanan tepi imej

2 🎜>

Cara menggunakan python untuk pengesanan tepi imej3. Operator Sobel

Tepi yang dikesan oleh operator Sobel adalah lebih berterusan daripada hasil pengesanan operator Roberts, dan digunakan untuk mengesan butiran imej . Keupayaan adalah lebih baik, dan pengesan tepi Sobel memperkenalkan purata tempatan, yang mempunyai kesan yang kurang pada hingar dan mempunyai kesan yang lebih baik.

Cara menggunakan python untuk pengesanan tepi imej4 Operator Canny

Keputusan pengesanan yang diperoleh oleh Canny adalah lebih baik daripada pengendali Roberts dan Sobel, dengan butiran tepi yang lebih kaya dan Kesinambungan kedudukan tepi yang tepat. adalah baik, terdapat sedikit tepi palsu dan tepi semuanya lebar piksel tunggal.

Pelaksanaan algoritma dibahagikan kepada 4 langkah berikut:


    Gunakan penapis Gaussian untuk melicinkan imej
  • Gunakan terbitan terhingga bagi tertib pertama Perbezaan untuk mengira magnitud dan arah kecerunan
  • Lakukan penindasan bukan maksimum amplitud kecerunan
  • Kesan dan sambungkan tepi menggunakan algoritma dwi ambang
  • 5 pengendali Laplacian

Pengendali pembezaan tertib kedua biasa termasuk pengendali Laplacian, yang merupakan pengendali mentor tertib kedua, agak sensitif kepada. hingar dalam imej, dan tepi yang dikesan selalunya adalah piksel berganda lebar dan tidak mempunyai maklumat arah, jadi pengendali Laplacian jarang digunakan untuk mengesan tepi secara langsung, tetapi digunakan terutamanya untuk menentukan piksel tepi selepas piksel tepi diketahui sama ada piksel berada dalam kawasan gelap atau terang pada imej. Di samping itu, pengendali perbezaan tertib pertama akan membentuk nilai kecerunan yang besar dalam julat yang luas, jadi ia tidak boleh diposisikan dengan tepat, manakala titik silang sifar bagi operator perbezaan tertib kedua boleh digunakan untuk mengesan tepi dengan tepat.

Bunyi pengendali Laplace jelas lebih besar daripada pengendali Sobel, tetapi bahagian tepinya jauh lebih nipis daripada Sobel, dan transformasi Laplace, sebagai pengendali pembezaan tertib kedua, amat sensitif kepada hingar dan akan menghasilkan dua kali ganda. tepi dan tidak dapat mengesan arah tepi .


Cara menggunakan python untuk pengesanan tepi imejEksperimen kesan

1 Pengesanan tepi Roberts

Kod operator prewitt:

Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int)
Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)

Cara menggunakan python untuk pengesanan tepi imej2. Prewitt edge detection

Prewitt operator code:

Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int)
Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)

Cara menggunakan python untuk pengesanan tepi imej3 , Sobel pengesanan tepi

Fungsi sobel:

edges = cv2.Sobel(img, -1, 1, 1)

Cara menggunakan python untuk pengesanan tepi imej4.

edges = cv2.Canny(img, 5, 100)

5. Pengesanan tepi Laplacian

Cara menggunakan python untuk pengesanan tepi imejFungsi Laplacian:

edges = cv2.Laplacian(img, -1)

Atas ialah kandungan terperinci Cara menggunakan python untuk pengesanan tepi imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam