Hough Transformation adalah teknologi ekstraksi fitur dalam pemrosesan gambar. Proses ini dalam ruang parameter menghitung nilai maksimum lokal dari hasil yang terakumulasi ke set yang sesuai dengan bentuk tertentu sebagai hasil transformasi Hough.
Sejarah Pembangunan:
Pertama kali diusulkan oleh Paul Hough pada tahun 1962 untuk mendeteksi garis dan kurva lurus.
Dipromosikan oleh Richard Duda & Peter Hart pada tahun 1972, ia diperluas ke pengakuan objek dalam bentuk apa pun.
prinsip:
Garis lurus diwakili dalam sistem koordinat persegi panjang sebagai y = k*x+b, dan dalam sistem koordinat kutub sebagai r = x*cos (theta)+y*sin (theta). Gagasan transformasi hough adalah bahwa titik dalam sistem koordinat persegi panjang sesuai dengan garis lurus di bawah sistem koordinat kutub, dan juga, titik dalam sistem koordinat kutub sesuai dengan garis lurus di bawah sistem koordinat persegi panjang. Dalam garis lurus dalam sistem koordinat persegi panjang, kemiringan dan intersep pasti, sehingga semua titik pada garis lurus ini difokuskan pada titik dalam sistem koordinat kutub, dan titik fokus seperti itu mewakili garis lurus dalam sistem koordinat persegi panjang.
Untuk garis lurus x = C, dalam aplikasi praktis, persamaan parameter p = x*cos (theta)+y*sin (theta) digunakan. Dengan cara ini, titik pada bidang gambar sesuai dengan kurva pada bidang parameter R-Theta, dan sisanya sama.
Transformasi Hough Standar:
Imgproc.houghlines (gambar mat, garis mat, rho ganda, theta ganda, ambang batas int, srn ganda, stn ganda, min_theta ganda, double max_theta)
Deskripsi Parameter:
Gambar: Sumber Gambar
Baris: Vektor output dari garis yang terdeteksi disimpan setelah transformasi hough
Rho: akurasi jarak dalam piksel
theta: akurasi sudut pada radian
Threshold: Nilai yang harus dicapai ketika suatu bagian adalah garis lurus
SRN: Jarak pembagi parameter Rho, dengan nilai default 0
STN: Jarak pembagi parameter theta, nilai default 0
Min_theta: Sudut minimum dari garis yang terdeteksi
MAX_THETA: Sudut maksimum dari garis yang terdeteksi
Kode contoh:
public static void main (string [] args) {System.LoadLibrary (core.native_library_name); Mat srcimage = imgcodecs.imread ("f: //6597210504144579394.jpg"); Mat DStimage = srcimage.clone (); Imgproc.canny (srcimage, dstimage, 400, 500, 5, false); Matrore matras = MAT baru (); Imgproc.houghlines (dstimage, penyimpanan, 1, math.pi / 180, 200, 0, 0, 0, 10); untuk (int x = 0; x <storage.rows (); x ++) {double [] vec = penyimpanan.get (x, 0); double rho = vec [0]; theta ganda = vec [1]; Titik pt1 = titik baru (); Titik pt2 = titik baru (); ganda a = math.cos (theta); Double B = Math.sin (theta); double x0 = a * rho; double y0 = b * rho; pt1.x = math.round (x0 + 1000 * (-b)); pt1.y = math.round (y0 + 1000 * (a)); pt2.x = math.round (x0 - 1000 * (-b)); pt2.y = math.round (y0 - 1000 * (a)); if (theta> = 0) {imgproc.line (srcimage, pt1, pt2, skalar baru (255, 255, 255, 255), 1, imgproc.line_4, 0); }} Imgcodecs.imwrite ("f: //dst2.jpg", srcimage); } Probabilitas Kumulatif Hough Transformation:
Imgproc.houghlinesp (gambar mat, garis mat, rho ganda, theta ganda, threshold int, double minlinelength, double maxlinegap)
Deskripsi Parameter:
Gambar: Sumber Gambar
Baris: Vektor output dari garis yang terdeteksi disimpan setelah transformasi hough
Rho: akurasi jarak dalam piksel
theta: akurasi sudut pada radian
Threshold: Nilai yang harus dicapai ketika suatu bagian adalah garis lurus
Minlinelength: Panjang segmen garis terendah, default ke 0
MaxlineGap: Jarak maksimum yang diizinkan untuk menghubungkan titik ke titik pada baris yang sama, default adalah 0
Kode contoh:
public static void main (string [] args) {System.LoadLibrary (core.native_library_name); Mat srcimage = imgcodecs.imread ("f: //6597210504144579394.jpg"); Mat DStimage = srcimage.clone (); Imgproc.canny (srcimage, dstimage, 400, 500, 5, false); Matrore matras = MAT baru (); Imgproc.houghlinesp (dstimage, penyimpanan, 1, math.pi / 180, 50, 0, 0); untuk (int x = 0; x <storage.rows (); x ++) {double [] vec = penyimpanan.get (x, 0); double x1 = vec [0], y1 = vec [1], x2 = vec [2], y2 = vec [3]; Titik mulai = titik baru (x1, y1); Titik akhir = titik baru (x2, y2); Imgproc.line (srcimage, start, end, skalar baru (255, 255, 255, 255), 1, imgproc.line_4, 0); } Imgcodecs.imwrite ("f: //dst2.jpg", srcimage); } Gambar Sumber:
Hasil Transformasi Hough Standar:
Probabilitas Kumulatif Hasil Transformasi Hough:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.