تصویر در کامپیوتر چه مفهومی دارد؟

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

خوب کامپیوتر چطوری یه تصویر رو گسسته میکنه؟

·     اولا یه طول و عرض به تصویر اختصاص میده. مثلا 480*640 . این اعداد به چه مفهومی هستن؟ این اعداد به این مفهوم هستن که اگه یه جدول به این ابعاد درست کنیم و روی تصویر قرار بدیم، هر خونه نماینده یک پیکسل(پیکسل کوچکترین جزء یک تصویره) خواهد شد. بنابراین یه تصویر هرچقدر هم که با کیفیت باشه و ابعاد بزرگتری داشته باشه باز هم گسسته هست.

·     رنگ هر پیکسل رو با یک عدد نمایش میدیم. رنج عدد ها نشان دهنده قدرت تفکیک کامپیوتر خواهند بود برای همین هست که میگیم کامپیوتر هایی با قدرت تفکیک چند میلیون رنگ. این چند میلیون با توجه به تفکیک عددی هست که کامپیوتر ها برای تصویر در نظر میگیرن. مثلا اگه برای هر تصویر فقط یک بیت در نظر بگیریم بنا براین فقط دو تا رنگ خواهیم داشت، سیاه یا سفید. ولی اگه چهار تا بیت در نظر بگیریم 16 تا رنگ خواهیم داشت و اگه هشت تا بیت در نظر بگیریم 256 رنگ خواهیم داشت. البته فضا های رنگی بحث های متفاوتی دارن که فعلا برای ما مطرح نیست.

قرار داد:

تصاویری که ما کار میکنیم برای هر پیکسل یک بایت در نظر گرفته شده و  رنگی نیست بلکه در مقیاس خاکستری تصویر رو نمایش داده میشه مثل تصویر زیر.

مشخصات تصویر

ابعاد تصویر 43*40

و مقیاس خاکستری

خوب ما کار رو با این تصویر شروع خواهیم کرد.

گام اول ماتریسی که این تصویر رو در خودش داره رو نشون میدم تا درک مناسبی از ذخیره اون پیدا کنید(برای اینکه بهتر دیده بشه ابعادش رو کوچیک کردم):همونطور که مشاهده میکنید با ترکیب دو عدد 0 و 255 (که نماینده رنگ های سیاه و سفید هستن) حالت دایره در یک زمینه سفید به دست اومده.

در مرحله بعدی کارهایی از قبیل مرکز ثقل، لبه یابی تصویر و ... رو با هم انجام خواهیم داد.


گام دوم مرکز ثقل:

در این تصویر ما میدونیم که زمینه سفید رنگ هست و مقدار 255 داره و شی ما سیاه رنگ هست پس پیکسل های اون مقدار صفر رو دارن. پس هر کجا که مقدار ماتریس صفر باشه اون پیکسل جزو دایره خواهد بود. حالا میخواهیم مرکز ثقل این شی رو به دست بیاریم.

برای اینکار با دوتا حلقه کل درایه های(پیکسل ها) ماتریس رو طی می کنیم و برای بدست آوردن مرکز ثقل از روش زیر استفاده میکنیم:

مساحت آبجکت رو بدست می آوریم . برای به دست آوردن مساحت تعداد پیکسل های آبجکت را جمع می کنیم . حال برای بدست آوردن I مرکز آبجکت مقدارi های پیکسل ها را با هم جمع و تقسیم به مساحت می کنیم . برای بدست آوردن J مرکز آبجکت مقدار j های پیکسل ها را با هم جمع و تقسیم به مساحت می کنیم .

[ti tj]=size(b);

masahat=0;

smi=0;

smj=0;

for i=1:ti

    for j=1:tj

        if b(i,j)==0

            masahat=masahat+1;

            smi=smi+i;

            smj=smj+j;

        end

    end

end

mi=fix(smi/masahat);

mj=fix(smj/masahat);

b(mi,mj)=255;

imshow(uint8(b));

در این برنامه به دلیل اینکه پیکسل ها به صورت گسسته می باشند و مقداری که برای مرکز شی به دست آمده مقدار صحیح نمی باشد(اعشاری است) ناچار به رند کردن عدد هستیم و بهمین خاطر مرکز ثقل دقیقا مرکز شی نمی باشد بلکه حدود یک پیکسل خطا دارد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد