Temukan garis tertentu dalam gambar

9

Saya ingin menemukan garis antara warna biru dan warna abu-abu pada gambar berikut:

masukkan deskripsi gambar di sini

Lebih tepatnya, titik akhir dari garis itu.

Apakah Hough mengubah pilihan? Jika ya bagaimana saya mengatur gambar sebelum menggunakan Hough?

Cara apa pun untuk menyelesaikan ini akan sangat membantu.


sumber
Lakukan deteksi tepi sebelum Hough berubah. Ini akan mengubah transisi itu menjadi garis cerah dengan warna hitam di kedua sisi
endolith

Jawaban:

10

Secara umum, Anda menginginkan detektor tepi, seperti detektor tepi Canny, untuk masalah seperti ini. Transformasi Hough berguna untuk mengekstraksi garis daripada tepi.

Namun, dalam kasus khusus ini, Anda lebih baik melakukan sesuatu seperti:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);

karena itu gambar yang sangat sederhana.

Nzbuu
sumber
0

Untuk gambar ini, kernel konvolusi sederhana seperti berikut ini akan menemukan tepian dengan baik:

[-1 2 - 1]

Ini menghasilkan piksel tepi tunggal pada setiap titik tepi. Tanpa ribut, tidak ada muss. Canny terlalu terlibat untuk masalah ini. Jika Anda ingin menemukan titik tepi untuk garis di sudut mana pun, maka Anda dapat menggunakan Laplacian, Laplacian of Gaussian (LoG), atau Difference of Gaussian (DoG) sederhana. Sobel dan Prewitt juga sederhana tetapi tidak sesuai karena mereka menghasilkan garis "ketebalan ganda".

Ada implementasi cepat Hough yang dijelaskan di sini: http://www.ic.uff.br/~laffernandes/projects/kht/index.html

Ada juga algoritma "parameterless Hough" yang sangat cepat, tetapi agak sulit untuk diimplementasikan dan didebug.

Rethunk
sumber