sobel operator-شناسایی لبه با استفاده از sobel - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

sobel operator-شناسایی لبه با استفاده از sobel

+1 امتیاز

با سلام

در مورد شناسایی لبه با استفاده از sobel : از مطالبی که در این مورد خوندم متوجه نشدم درایه های ماتریس sobel عمودی و افقی  بر چه اساسی نوشته شدن ؟ برای مثال

لطفا راهنمایی کنید

\mathbf{G}_x = \begin{bmatrix}  +1 & 0 & -1 \\ +2 & 0 & -2 \\ +1 & 0 & -1  \end{bmatrix} * \mathbf{A} \quad \mbox{and} \quad    \mathbf{G}_y = \begin{bmatrix}  +1 & +2 & +1  \\ \ \ 0 & \ \ 0 & \ \ 0 \\ -1 & -2 & -1  \end{bmatrix} * \mathbf{A}
سوال شده بهمن 15, 1392  بوسیله ی خورشید تابان (امتیاز 36)   4 7 11
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

عملگر  سوبل قصد داره تا با این 2 کرنل عملیات مشتق را در 2 جهت انجام بده .برای اینکه بهتر متوجه بشید تصویر داده 2 بعدی من با یک بعدی برای شما مثال می زنم. فرض کنید شما یک آرایه ای از مقادیر دارید حال قصد دارید در هر خانه از آرایه مشتق را محاسبه کنید مشتق یعنی مقدار خانه قبلی را از مقدار خانه بعدی کم کنید. که کرنلش میشه به صورت زیر:

برای اینکار باید کرنل بالا را با داده های آرایه کانولوشن کنید.پس بدین ترتیب عملیات مشتق را بر روی داده انجام داده.

کار دومی که بایستی انجام بدید رفع نویز هستش این کار می تونید با میانگین در هر نقطه انجام بدید که هر عنصر دارای وزن یکسان یک باشند

;کرنل به این صورت [1 1 1] .حال برای دقیق بودن این میانگین گیری می تونیم از کرنل تقریبی گوسین استفاده کنیم.به صورت زیر :

حال با ضرب این کرنل میانگین در کرنل مشتق کرنل مشتق در جهت x ساخته میشه.به صورت زیر در جهت y هم به همین صورت

 

پاسخ داده شده بهمن 17, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد بهمن 23, 1392 بوسیله ی BlueBlade
سلام لطفا راهنماییم کنید که بعد ازینکه این کد هارو نوشتم و کرنال رو در ماتریس تماما ضرب کردم باید چه کاری انجام بدم تا لبه ها مشخص بشه

s=imread('C:\Users\abolfazl\Desktop\pardazesh tasvir\moshtagh1\moshtaghorg.jpg');
>> [x,y]=size(s);
>> matrixx=[-1,0,1;-2,0,2;-1,0,1];
>> for i=2:x-1;
for j=2:y-1;
stack(1,1)=s(i-1,j-1)*matrixx(1,1);
stack(1,2)=s(i-1,j)*matrixx(1,2);
stack(1,3)=s(i-1,j+1)*matrixx(1,3);
stack(2,1)=s(i,j-1)*matrixx(2,1);
stack(2,2)=s(i,j)*matrixx(2,2);
stack(2,3)=s(i,j+1)*matrixx(2,3);
stack(3,1)=s(i+1,j-1)*matrixx(3,1);
stack(3,2)=s(i+1,j)*matrixx(3,2);
stack(3,3)=s(i+1,j+1)*matrixx(3,3);
...