سؤال عن استخدام احداثيات نقطة بالنسبة لمركز الدائرة


(system) #1

السلام عليكم

أشكركم على هذا الجهد الجبار وأسأل الله أن يوفقكم , لدي بعض الاستفسارات وأملي أن أجد لديكم إجابات عنها :slight_smile:

ما أريده هو أن أقوم بفتح صورة على شكل دائرة باستخدام الماتلاب ثم تحديد اي نقطة فيها باستخدام الماوس , فتظهر لي معلومات عن النقطة ( البيكسل ) الذي قمت بتحديده وهي : معلومات اللون + احداثيات البيكسل بالنسبة لمركز الدائرة.[COLOR=navy]
حاولت أن أقوم بذلك ولكن لم استطع , آخر ما وصلت إليه هو:

[B]

RGB = imread('hsv3.jpg');

[/b]



[RIGHT][B][x,y,P] = impixel(RGB)[/b]
[RIGHT][B]a = 513;[/b]
[B]b = 505;[/b]
[B]r = sqrt( (x-a)^2 + (y-b)^2 );[/b]
[B]t = atan( (y-b)/(x-a) );[/b][/right]
[/right]

[RIGHT]شرح الأوامر بالترتيب:

1/ يقوم بقراءة صورة من ملف ويضعها في المصفوفة RGB.
2/ يقوم يفتح الصورة وانتظار المستخدم لتحديد نقطة أو عدة نقاط عليها ثم يعيد النتيجة حيث أن: x,y هي احداثيات النقطة (السين والصاد ) وP هي معلومات لون البيكسل بصيغة RGB.
3-4/ تحديد مركز الدائرة يدوياً وتخرين القيم في a,b.
5/ استخدام معادلة المثلث لتحديد بعد النقطة عن نقطة الأصل.
6/ استخدام atan ( وهو كما أظن tan أس -1 ) لإيجاد الزاوية.

لكن لم استطع استخدام القيم r و t لاختيار البيكسل من صورة أخرى , ولا أدري إن كانت طريقتي صحيحة أم لا لذا أرجو منكم مساعدتي في هذا ولكم جزيل الشكر.

[/color]
[/right]


(mr.volt) #2

اخي الكريم اليك الحل : هناك امر في الماتلاب اسمه imcrop يقوم بالتعامل مع الصورة باستخدام الماوس الان : ضع في شاشه الاوامر التالي :

>> I = imread('circuit.tif');    I2 = imcrop(I)

بعدها انقر بالماوس على الصورة التي ستظهر لك وسيعطيك قيمه البكسل التي تريد
الان لمعرفه الاحداثيات لا بد ان تدخل الى كود البرنامج وتلعب فيه …وتستطيع الدخول اليه عن طريق التالي :
edit imcrop
اي مساعده انا جاهز


(system) #3

شكرا لك اخي الكريم على تجاوبك معي

جربت الأمر imcrop وبحثت عنه في المساعدة الموجودة في البرنامج وكما ظهر لي أن الأمر يقوم بقص جزء من الصورة وتخزينه في مصفوفة , وعندما أقوم بالنقر على الماوس نقرة مفردة يُعيد لي قيمة ذلك البيكسل برقم واحد ! وكما نعرف أن قيمة أي لون بصيغة RGB تتكون من ثلاث أرقام يمكن أن تكون على شكل مصفوفة هكذا: [R G B ] حيث ان R للون الأحمر وG للون الأخضر وB للون الأزرق وتكون قيمة كل منها تتروح بين الصفر والواحد.

[COLOR=navy][B]

الان لمعرفه الاحداثيات لا بد ان تدخل الى كود البرنامج وتلعب فيه …وتستطيع الدخول اليه عن طريق التالي :
[/b][/color]

edit imcrop

هل أنا مضطر للتعديل ؟ حيث أني مبتدئ ولم أصل لهذه المرحلة بعد :slight_smile:

ألا يوجد أمر جاهز يقوم بهذه العملية ؟ أنا استخدمت طريقة أخرى كما ترى في بداية الموضوع ولم تخبرني برأيك فهل يعني هذا أن ما قمتُ به خاطئ تماماً ؟

شكرا لك