গ্রেডিয়েন্ট ভিত্তিক হাফ রূপান্তর কীভাবে কার্যকর করা যায়


9

আমি প্রান্ত সনাক্তকরণের জন্য হাফ রূপান্তরটি ব্যবহার করার চেষ্টা করছি এবং ভিত্তি হিসাবে গ্রেডিয়েন্ট চিত্রগুলি ব্যবহার করতে চাই।

আমি এতদূর কি করেছ, ইমেজ দেওয়া 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)

নতুন ফলাফল


"যখন আমি এর ম্যাক্সিমাকে মূল চিত্রটিতে প্রান্ত পরামিতি হিসাবে ব্যবহার করার চেষ্টা করি" আপনি কীভাবে তা করছেন?
এন্ডোলিথ

@ জোনাস ডিউ ভেসেরহেডেন কেবল অবাক হয়ে ভাবছেন এই সময়টি কি ভিএস ডপলার ফ্রিকোয়েন্সি চিত্র? ...
স্পেসি

@ মোহাম্মদ: আমি জানি না know মূল চিত্রটি কিছু সার্কিট বোর্ডের। "ভিএস" বলতে কী বোঝ?
জোনাস ডিউ ভেষ্টেরহেডেন

@ জোনাসডুভেস্টারহেডেন 'ভিএস' এর অর্থ 'বনাম'। (সময় বনাম ডপলার ফ্রিকোয়েন্সি ') :-)
স্পেসি

এটিতে নন সর্বাধিক দমন প্রয়োগ করার আগে আপনার খড়ের মানচিত্রটি মসৃণ করা উচিত।

উত্তর:


2

আপনার প্রশ্নে আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি। প্রান্ত নয়, লাইনগুলি সনাক্ত করতে প্রচুর রূপান্তর ব্যবহৃত হয়।

যদি আপনি চান সমস্ত একটি প্রান্ত মানচিত্র, আপনি কেবল গ্রেডিয়েন্ট প্রশস্ততা প্রান্তিক করা উচিত, বা ক্যানি এজ ডিটেক্টর এর মতো আরও অভিনব কিছু ব্যবহার করা উচিত।

আপনি যদি সরল রেখাগুলি সনাক্ত করতে চান তবে আপনি কোনও প্রান্তের মানচিত্রের সাথে শুরু করে houghফাংশনটি ব্যবহার করা ভাল এবং যদি চিত্র প্রসেসিং সরঞ্জামবক্সে আপনার অ্যাক্সেস থাকে তবে এটি ব্যবহার করুন। গ্রেডিয়েন্টে হফ ট্রান্সফর্ম করার সমস্যাটি হ'ল একটি সরলরেখা তৈরি প্রান্ত পিক্সেলের বিপরীত গ্রেডিয়েন্ট ওরিয়েন্টেশন থাকতে পারে। উদাহরণস্বরূপ, একটি চেকারবোর্ড প্যাটার্ন বিবেচনা করুন। আপনার উপরে একটি কালো বর্গক্ষেত্র এবং নীচে একটি সাদা বর্গক্ষেত্র বা অন্যদিকে অন্যদিকে রয়েছে তার উপর নির্ভর করে দুই সারির স্কোয়ারের মধ্যবর্তী প্রান্তটি ফ্লিপ করে।

আপনার বাস্তবায়ন হিসাবে, আমি মনে করি সমস্যাটি হ'ল আপনার হাফ ম্যাট্রিক্সের বিনগুলি খুব ছোট। মূলত rho মাত্রায় বিনের আকার 1 এবং থিতা মাত্রায় বিনের আকার 2 ডিগ্রির কম। এর অর্থ এই যে গ্রেডিয়েন্ট ওরিয়েন্টেশনগুলি অবশ্যই একটি লাইন গঠনের জন্য খুব স্পষ্টভাবে আলোকপাত করতে হবে, যা অনুশীলনে খুব কমই ঘটে। আপনি যদি rho_idx এবং theta_idx কে কুলেট করেন যাতে বিনগুলি আরও বড় হয়, এটি আপনার লাইন সনাক্তকারীকে ত্রুটির প্রতি আরও সহনশীল করে তুলবে এবং আপনি আরও ভাল লাইন পেতে পারেন।


1

এই সমস্যাটি কিনা তা আমার কোনও ধারণা নেই তবে আতান () কেবল আপনাকে চতুর্ভুজ দ্বিগুণের কারণে -৯০ থেকে +৯০ ডিগ্রি পর্যন্ত কোণ দেয়। পূর্ণ গ্রেডিয়েন্ট এঙ্গেল পেতে (-180 থেকে 180) আপনার atan2 () ব্যবহার করতে হবে।


পরামর্শের জন্য ধন্যবাদ! আমি এটি যেমন বুঝতে পারি, -90 থেকে +90 ডিগ্রি পর্যন্ত কোণগুলি ব্যবহার করা যথেষ্ট হবে কারণ প্রান্তগুলির "দিকনির্দেশ" কোনও বিষয় নয়। আমি ব্যবহার করার চেষ্টা করেছি atan2, তবে সমস্যাগুলি ঠিক করার মতো মনে হচ্ছে না।
জোনাস ডিউ ভেসেরহেডেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.