আমি প্রান্ত সনাক্তকরণের জন্য হাফ রূপান্তরটি ব্যবহার করার চেষ্টা করছি এবং ভিত্তি হিসাবে গ্রেডিয়েন্ট চিত্রগুলি ব্যবহার করতে চাই।
আমি এতদূর কি করেছ, ইমেজ দেওয়া I
আকারের [M,N]
এবং তার আংশিক ডেরাইভেটিভস gx
, gy
, যেমন প্রতিটি পিক্সেল মধ্যে গ্রেডিয়েন্ট কোণটির গণনা করা হয় thetas = atan(gy(x,y) ./ gx
। একইভাবে আমি হিসাবে গ্রেডিয়েন্ট বিস্তৃতি গণনা করি magnitudes = sqrt(gx.^2+gy.^2)
।
হাফ ট্রান্সফর্মটি তৈরি করতে, আমি নিম্নলিখিত ম্যাটল্যাব কোডটি ব্যবহার করছি:
max_rho = ceil(sqrt(M^2 + N^2));
hough = zeros(2*max_rho, 101);
for x=1:M
for y=1:N
theta = thetas(x,y);
rho = x*cos(theta) + y*sin(theta);
rho_idx = round(rho)+max_rho;
theta_idx = floor((theta + pi/2) / pi * 100) + 1;
hough(rho_idx, theta_idx) = hough(rho_idx, theta_idx) + magnitudes(x,y);
end
end
ফলস্বরূপ হফ রূপান্তরটি প্রশংসনীয় দেখায় (দেখুন http://i.stack.imgur.com/hC9mP.png ) তবে যখন আমি এর ম্যাক্সিমাকে মূল চিত্রটিতে প্রান্ত পরামিতি হিসাবে ব্যবহার করার চেষ্টা করি তখন ফলাফল কমবেশি এলোমেলো দেখায়। আমি কি হাফ রূপান্তরটি নির্মাণে কিছু ভুল করেছি?
আপডেট : আমার কোডটিতে আমার একটা বোকা ভুল rho
ছিল : তার x*cos(theta)+y*cos(theta)
পরিবর্তে গণনা করা হয়েছিল x*cos(theta)+y*sin(theta)
। অর্থাৎ, আমি একটি কোসাইন এবং একটি সাইন পরিবর্তে দুটি কোসাইন ব্যবহার করছিলাম। আমি উপরের কোডটি সম্পাদনা করেছি এবং নতুন ফলাফলের চিত্রটি নীচে। এটি যদিও আরও ভাল প্রান্ত দেয় না।
@endolith: hough
-matrix এ সর্বাধিক মান প্রদত্ত একটি প্রান্ত প্লট করতে rho_idx, theta_idx
আমি সূচকগুলি rho,theta
মানগুলিতে অনুবাদ করি :
theta = (theta_idx -1) / 100 * pi - pi / 2;
rho = rho_idx - max_rho;
অবশেষে আমি প্রান্তটি হিসাবে প্লট করি y= (rho - x*cos(theta)) / sin(theta)
।