Saya memiliki gambar yang terlihat seperti di bawah ini:
Saya mencoba menemukan jari-jari (atau diameter) lingkaran. Saya telah mencoba menggunakan circular Hough transform (via matlab's imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
), dan dengan memasang lingkaran atau elips (fungsi buatan sendiri yang berfungsi dengan baik untuk data yang kurang berisik, lihat di bawah).
Saya juga sudah mencoba beberapa pemrosesan gambar untuk mendapatkan lingkaran yang lebih jelas, misalnya, lihat di bawah:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Namun, ketika saya memberi makan gambar yang diproses ke teknik (pas Hough dan lingkaran \ elips) tidak satu pun dari mereka berhasil mendeteksi lingkaran dengan cara yang layak.
Berikut cuplikan kode finder lingkaran yang saya tulis (matlab) [row col] = find (bw); contour = bwtraceboundary (bw, row (1), col (1)], 'N', konektivitas, num_points);
x = contour(:,2);
y = contour(:,1);
% solve for parameters a, b, and c in the least-squares sense by
% using the backslash operator
abc = [x y ones(length(x),1)] \ -(x.^2+y.^2);
a = abc(1); b = abc(2); c = abc(3);
% calculate the location of the center and the radius
xc = -a/2;
yc = -b/2;
radius = sqrt((xc^2+yc^2)-c);
Pendekatan alternatif akan dihargai ...
Jawaban:
Ini solusi saya, dekat dengan ide @ Yoda, tapi saya mengubah beberapa langkah.
Berikut adalah kode Matlab yang relevan. Saya menggunakan transformasi Hough untuk file .m dalam kode saya.
sumber
Cukup mudah untuk melakukannya menggunakan pemrosesan gambar. Berikut ini adalah bukti konsep dalam Mathematica . Anda harus menerjemahkannya ke MATLAB.
img
.Binarize gambar dan melebarkannya, diikuti oleh transformasi pengisian. Saya juga menghapus komponen kecil yang tidak terhubung ke gumpalan utama. Seharusnya memberi Anda sesuatu seperti berikut:
Selanjutnya, cari centroid gumpalan ini dan jari-jari disk setara gumpalan (openCV, MATLAB semua memiliki perintah yang setara untuk melakukan ini)
Itu dia! Sekarang plot gambar asli dan lingkaran dengan pusat di atas dan jari-jari untuk melihat bagaimana itu cocok:
sumber