دانشگاه صنعتی شریف دانشکدهی مهندسی کامپیوتر بهار 3131 پروژهی اول :پیادهسازیِ یک سیستم پردازش تصویر برای تشخیصِ موج شوک مبانی برنامهسازی امید غیبی طراحان پروژه پیمان فخاریان امیرحسین پورشعبان 1 هدف پروژه یکی از معضالت همیشگی در هدایت و ناوبری وسایل پرنده ،دانستن میزان سرعت واقعی آن است .برای رفع این نیاز مهندسان سنسورهایی را در قسمتهای مختلف قرار میدهند تا بتوانند با استفاده از ویژگیهایِ سیال عبوری ،میزان سرعت پرنده را اندازهگیری کنند اما نکتهای که وجود دارد ،وجود خطا در این سنسورهاست و برای برنامهریزی کامپیوتر پرواز نیازمند دانستن میزان خطای این سنسورها هستیم .لذا باید این سنسورها را با روش دیگری نیز تست کرد. یکی از روش های تست سرعت برای هواپیماهای مافوق صوت تعیین میزان زاویه شوک هواپیماست؛ بنابراین هدف پروژه، ت پرنده بر اساس موجهای شوک تشکیل شده بر روی آن است. تعیین سرع ِ توضیحات علمی ی ما به صورت به منظور استفاده علمی بر اساس شواهد از پرندهی مورد نظر عکاسی میشود؛ بنابراین اطالعات اولیه ِ عکس است اما چگونه می توان بر اساس عکس یک پرنده سرعت حرکت آن را تشخیص داد؟ ذات طبیعت! طبیعت یک روال همیشگی دارد؛ ما نیز آن را در شرایطی دیدهایم ،آن را یافتهایم ،آزمایشش کردهایم و در آخر با فهم انسانیمان آن را تحلیل کردهایم. موج شوک نیز یک واکنش طبیعت است به یک جسمِ پُرسرعت اما جالب است که این موج تغییر خواص خود را نسبت به زاویهی جسم و نه ابعاد آن میدهد. همان طور که مالحظه می کنید در ارتباط با یک موج چند پارامتر اهمیت دارند: سرعت ها قبل و بعد از موج ،زاویه ی جسم ( )Θو زاویه ی شوک ()β ق هواپیمای مورد استفاده را داریم. زاویه ی جسم ( )Θمشخص است؛ زیرا همیشه ابعاد دقی ِ 2 سرعتها :بر اساس آزمایشات و تئوریهای مطرح ،ارتباط میان سرعت ها Θ ،و βرا میدانیم. جدول زیر یکی از جداولی است که به کمک ما میآید و با کمک اطالعاتی که در تونلهای باد به دست آمده است کشیده شده است. پس تنها مجهول ما در این مسئله زاویه شوک است که شما باید آن را با استفاده از پردازش تصویر به دست بیاورید. برای دیدن تصاویر بیشتر می توانید واژه های زیر را گوگل کنید. Schlieren photography - Oblique shockwave 3 هدف برنامهسازی هدف شما در این پروژه ،طراحی یک واح ِد پردازش تصویر است که بتواند هواپیما و موج شوک آن را پیدا کند. پروژه کامال بر مبنای قوهی تفکر شما بنا شده و از هرگونه ایدهی جدید ،بسیار استقبال میشود .ایدههای شما میتواند در بخشهای مختلفِ پروژه ،در حالتهای جزیی ،ایجاد امکانات جدید برای واح ِد پردازش تصویر و ...باشد. صورت پروژه با تصاویر دیجیتال آشنایی دارید! این تصاویر با دو عدد نشان داده میشوند؛ به عنوان مثال ،یک عکس ،002×042 میتواند عکسی باشد که ارتفاع آن 002پیکسل و طول آن 042پیکسل است؛ بنابراین چنین عکسی دارای 00822 پیکسل (نقطه) است .در زبان ،Cشما هر تصویر را با یک آرایهی دوبعدی و هر پیکسل را با یک نقطهی این آرایه نشان میدهید .به عنوان مثال ،شما عکس 002×042باال را میتواند با یک آرایهی دوبعدی به طول افقی 042و ارتفاع 002 نشان دهید که در عمل باعث تعریف آرایهی Imageبه صورت ] Image[320][240میشود .هر عضو آرایه به صورت ] Image[i][jیک پیکسل را نشان میدهد. آرایهی تعریفی شما ( )Imageباید از نوع intباشد .در عمل برای هر پیکسل ،سه عدد در نظرگرفته میشود .این اعداد که به RGBمعروف هستند ،نشاندهندهی نور (رنگ) قرمز ،سبز و آبی در هر نقطه هستند و میدانید که سایر نورها را میتوان با این سه نور ساخت .هرکدام ازین نورها در کامپیوتر ،با یک بایت ( )022-2نشان داده میشود .برای راحتیِ کار شما در این پروژه ،به جای سه عدد ،تنها یک عدد به عنوان رنگ هر نقطه داده میشود؛ بنابراین آرایهی Imageشما، محتوی مقادیری از intاست که بین صفر تا 022قرار دارند .عدد صفر به معنای سیاه و عدد 022به معنای سفید است. با دادن این آرایه به شما ،باید بتوانید هواپیما و موج شوک حاصل از آن را پیدا کنید .به جدول زیر توجه کنید .هرعضو این جدول ،یک عضو آرایهی Imageرا نشان می دهد .فرض کنید که این آرایه تنها از اعدا ِد صفر (مشکی)( 022 ،سفید) و( 002خاکستری) تشکیل شده است؛ بنابراین در این جدول سه رنگ یادشده به صورت زیر مشاهده میشوند. میبینید که هواپیما را میتوانید با چشم به راحتی پیدا کنید و موجهای شوک آن را نیز تشخیص دهید .برنامهی شما باید بتواند که آرایهی مربوط به تصویر را دریافت کرده و با تشخیص هواپیما و موجهای شوکِ آن ،به ما کمک کند. ی شما یک آرایه از اعداد است و در اینجا ،به جای نوشتن اعداد در جدول ،از رنگها استفاده کردیم توجه کنید که ورود ِ ت پایین تصویر هواپیما در آرایهی زیر تا بتوانید هواپیما و موج شوک آن را آسانتر تشخیص دهید! همچنین از کیفی ِ شاکی نباشید! تصویر زیر یک عکس 04×04است و بنابراین کیفیت باالیی ندارد! ما به شما ورودیهایی در ابعا ِد 7020×0202خواهیم داد!!! 4 A A B B B B A A ی پروژه ورودی و خروج ِ ورودی برنامهی شما ،ابتدا دو عدد nو mاست .این دو عدد از نوعِ intو حداکثر دارای مقدار 72222هستند .سپس برنامهی شما باید آرایهی Imageرا به ابعا ِد nو mایجاد کند (] )Image[n][mکه nسطر و mستون را برای آرایه (جدول) مورد نظر ما ،تخصیص میدهد .در مرحلهی بعدی ،ورودی برنامهی شما n×m ،عدد از نوع intاست که هر یک حداکثر مقدار 022دارد؛ به عنوان مثال ،در جدول باال ،ورودیهای شما به ترتیب 04و 04و بعد از آن 04×04عدد خواهد بود! 5 در عمل برای نوشتن و عیب یابی پروژه ،نیاز دارید که بارها و بارها ورودی مشخصی را به برنامهی خود بدهید .هربار تایپ 200( 04×04عدد) ،کار آسانی نخواهد بود! ثانیا 200 ،عدد ،تنها برای تصاویری با رزولوشن 04×04است ،درحالیکه ما به شما ،تصاویری در رزولوشن 7020×0202خواهیم داد که شامل 4،003،302عدد میشود و وارد کردن آن در محیط اجرایی برنامه ،عمرِ حضرت نوح میطلبد! بنابراین برنامهی شما برای خواندن ورودی از فایلها استفاده میکند .در فایل پیوست پروژه ،توضیحاتی دربارهی فایلها در زبان Cآمده است .نیازی به دانستن همهی آن نیست ،شما تنها باید بتوانید از یک فایل ،یک سری عدد بخوانید! با توجه به اینکه پروژه به صورت حضوری تحویل گرفته می شود ،برای نمایش خروجی آن ،هیچ الگوی مشخصی وجود ندارد! خروجی شما حتما باید شاملِ نقطه ی شروع ،پایان و طول موج شوک باشد؛ همچنین نمایش زاویهی شوک باید در دستور کار شما قرار گیرد .منظور از نقطه ی شروع ،جایی است که موج از هواپیما شروع میشود و نقطهی انتهایی جای است که موج شوک پایان مییابد .در شکل باال نقاط انتهاییِ موج شوک با Aو نقاط ابتدایی با Bمشخص شدهاند. قوانین -7دستورات استفاده شده در برنامهی شما ،باید منطبق بر زبان Cاستاندارد باشد؛ بنابراین استفاده از آرایه با طول دریافتی از کاربر (که در محیط Devامکانپذیر است) و توابعِ کتابخانهی Conio.hسابق مثل Gotoو Clrscr و ...منجر به نمرهی صفر خواهد شد. -0پروژهی شما با استفاده از مطالبی که تاکنون در کتاب درسی و جزواتِ داده شده ،خواندهاید ،قابل نوشتن است ولی برای راحتی کار خود می توانید از توابع و امکاناتِ دیگر نیز استفاده کنید .ترجیحِ ما ،نوشتنِ پروژه از سوی شما با استفاده از مطالبی است که تاکنون خواندهاید! استفاده از دیگر توابع نباید به گونهای باشد که سرعت برنامهی شما را زیاد کاهش دهد. ت دیگر ،چنانچه اختالف کلیِ خانههای آرایه -0اختالف عدد رنگها تا مقدار ،72قابل چشمپوشی است .به عبار ِ مربوط به موج شوک ،عددی کمتر از 72داشته باشند ،میتوان آن دو را یک رنگ در نظر گرفت. گ هواپیما بین صفر و بیست خواهد بود .پسزمینه و خطوط موج شوک میتواند هر رنگی -4عد ِد مربوط به رن ِ داشته باشد ولی با یکدیگر اختالف رنگ دارند؛ به عنوان مثال ،پسزمینه میتواند قرمز ( )702باشد ،در حالیکه موج شوک خاکستری ( )002باشد .اختالفِ عددی این دو رنگ بیشتر از 02خواهد بود. -2تحویل پروژه به صورت حضوری خواهد بود .نمرات شما در هنگام تحویل به خو ِد شما گفته خواهد شد. -0در صورتی که احساس شود که به کد ِ خود تسلط ندارید ،نمرهی شما صفر خواهد بود! همچنین در هنگام تحویل باید بتوانید تمامیِ قسمتهای پروژه را دوباره بنویسید! -0در نوشتن پروژه میتوانید از همکاری با سایر دوستانتان بهرهمند شوید! با این وجود باید کدهای پروژهی ارائه شده از سوی شما ،توسط خودتان نوشته شده باشد. -8سواالتِ خود را در گروه درس مطرح کنید. 6 معیارهای نمرهدهی -7پروژهی شما بدون خطا اجرا شود. -0در نوشتن پروژه از تعریف توابع مختلف استفاده شده باشد .نوشتنِ توابع ،باعث میشود که پروژهی شما خواناتر باشد و عیبیابی آن آسانتر انجام شود. -0دریافت ورودی از طریق خواندن فایل باشد. -4کامنتگذاری مناسب در تمام پروژه انجام شده باشد. ع تولید ورودی نمرهی اضافی خواهد داشت .در این حالت ،برنامهی -2استفاده از توابع تولیدِ اعداد تصادفی و یا تاب ِ ی اصلیِ خود را تولید کند و از آن در شما باید بتواند به جای دریافت ورودی ،اعداد مناسب برای آرایهی دو بعد ِ اجرای برنامه استفاده کند. -0حداقلِ مورد انتظار ما ،تشخیص موج شوکِ یک هواپیمای افقی است که موج شوک آن زاویهی چهل و پنج درجه داشته باشد .تشخیص هواپیمای غیر افقی ،تشخیص زاویههای 02درجه و 02درجه ،همگی مشمول نمرهی اضافه میشود. ط هواپیما ،یک نقطهی سوخته به -0برنامه ی شما باید بتواند نقاط سوخته را نیز درنظر بگیرد .در شکلِ باال ،در وس ِ رنگ قهوهای مشخص شده است .برنامهی شما نباید در مواجهه با چنین نقاطی دچار مشکل شود .نقطهی سوخته هر رنگی (عددی) میتواند داشته باشد ولی اختالف آن با نقاط مجاورِ غیرِسوخته ،حداقل 22خواهد بود. -8همراه با پروژه ،یک گزارش (حداقل دو صفحه) پیوست کنید .در این گزارش ،الگوریتم تشخیصِ الگوی خود و نکاتِ کلی مربوط به آن را توضیح دهید .فایل گزارش باید در قالب PDFباشد و فرستادن با تاخیر آن ،قبول نیست. -3از هرگونه ایدهی جالب ،بسیار بسیار استقبال میشود! زمان تحویل پروژه خ یکشنبه 7030/7/04 ،باید در سیستم داوری ( )Judgeبارگذاری شود. پروژهی شما حداکثر تا ساعتِ 70شبِ تاری ِ حتی یک دقیقه تاخیر نیز مشمولِ ارسال با تاخیر میشود؛ بنابراین بهتر است چندین ساعت قبل از این ،اقدام به ارسال پروژه کنید تا در صورت قطعی اینترنت ،ریستشدن کامپیوتر و ...مشکلی برای ارسال نداشته باشید. پروژه به صورت یک فایل .Zipفرستاده شود که در آن فایل ،کدهای شما و فایلِ PDFمربوط به گزارشِ کارتان قرار گرفته باشد .توجه شود که هر مورد خارج ازین قالب ،توسط سیستمِ داوری ،نادیده گرفته خواهد شد و مسئولِ کم شدن نمرهی شما ،شخصی غیر از خودتان نخواهد بود! 7 تحویل حضوری احتماال از تاریخ دوشنبه 7030/7/02تا چهارشنبه 7030/7/00گرفته خواهد شد .تاریخ قطعیِ آن متعاقبا گفته خواهد شد .افرادی که پروژهی خود را تا تاریخ 7030/7/04نفرستادهاند ،تا تحویل حضوری فرصت دارند که ک ِد خود را تکمیل ،در سیستم داوری بارگذاری و در هنگام تحویل ارائه دهند .در این صورت ،نمرهی ثبت شده برای شما %02 ،نمرهایست که در حالت بدون تاخیر میتوانستید کسب کنید! گروه پروژه 8
© Copyright 2026 Paperzz