Pada prinsipnya, ini adalah tindak lanjut terhadap masalah dari beberapa minggu yang lalu , meskipun ini tentang algoritma secara umum tanpa aplikasi untuk masalah aktual saya.
Algoritma pada dasarnya mencari melalui semua garis dalam gambar, mulai dari kiri atas, sampai menemukan pixel yang merupakan batas. Dalam pseudo-C ++:
int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
if(pixels[i] == border)
{
start = i;
break;
}
}
Ketika menemukan satu, ia memulai algoritma kotak marching dan menemukan kontur ke objek apa pun milik pixel.
Katakanlah saya memiliki sesuatu seperti ini:
Di mana semuanya kecuali warna putih adalah perbatasan.
Dan telah menemukan titik kontur gumpalan pertama:
Untuk algoritma umum sudah berakhir. Ia menemukan kontur dan telah melakukan tugasnya. Bagaimana saya bisa beralih ke dua gumpalan lainnya untuk menemukan kontur mereka juga?
Jawaban:
Bisakah Anda menghapus poligon yang ditemukan dengan menggambarnya dalam warna latar belakang dan ulangi sampai tidak ada yang tersisa?
sumber
Periksa ini:
http://en.wikipedia.org/wiki/Connected-component_labeling Setelah mendeteksi gumpalan, cukup menerapkan marching kotak alg untuk mendapatkan margin setiap gumpalan.
Sampai jumpa Lo
sumber
mengapa tidak menyimpan informasi gumpalan ke array lain dan memeriksa apakah piksel yang baru ditemukan berada dalam kotak pembatas gumpalan sebelumnya? Beberapa manipulasi akan diperlukan untuk menangani gumpalan di bawah centriod gumpalan sebelumnya dan yang termasuk dalam kotak pembatas.
sumber