• انتقال از سیگنال ها و تبدیل های پیوسته به سیگنال های گسسته. تصویربرداری آنالوگ و گسسته

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

    اسلاید 11از ارائه "کدگذاری و پردازش اطلاعات". حجم آرشیو با ارائه 445 کیلوبایت است.

    انفورماتیک پایه نهم

    خلاصه سایر ارائه ها

    "الگوریتم های ساختار شاخه ای" - اگر شرط، سپس اقدام. چه می دانیم. ساختار درس الگوریتم انشعاب. الگوریتم را اجرا کنید و جدول را پر کنید. دانش آموزی که از 85 تا 100 امتیاز فراگیر کسب کند به دور دوم مسابقات راه می یابد. تعداد امتیازات را وارد کنید و مشخص کنید که آیا او به دور دوم راه یافته است یا خیر. بزرگترین عدد بین a و b را پیدا کنید. یک برنامه به زبان برنامه نویسی بنویسید. الگوریتم انشعاب، الگوریتمی است که در آن، بسته به شرایط، یک یا چند توالی از اقدامات انجام می شود.

    "ایجاد هوش مصنوعی" - رویکرد شبیه سازی. رویکردهای ساخت سیستم های هوش مصنوعی رویکرد تکاملی هوش مصنوعی. می تواند با افراد زیادی زندگی مشترک داشته باشد و به مقابله با آن کمک کند مشکلات شخصی. رویکرد ساختاری رویکرد منطقی مشکلات در طول توسعه چشم انداز توسعه و دامنه.

    "برنامه های چرخه ای" - رقمی. حلقه با پیش شرط. مقدار را پیدا کنید. حلقه با شرط پست. چرخه با یک پارامتر. الگوریتم اقلیدس برنامه های چرخه ای مجموع اعداد طبیعی را بیابید. مفهوم چرخه. هزینه اولیه جدول بندی توابع محاسبه. مثال. تقسیم کننده ها علوم کامپیوتر. تعداد اعداد را پیدا کنید. پیدا کردن. تعداد اعداد طبیعی سه رقمی را بیابید. اعداد سه رقمی مجموعه مقادیر تابع را پیدا کنید. جدول تبدیل دلار

    "ایمیل چیست" - فرستنده. آدرس ایمیل. سابقه ایمیل. موضوع ایمیل. ساختار نامه. مسیریابی ایمیل حرف. پست الکترونیک. کپی 🀄. تاریخ. ایکس میلر. پست الکترونیک. چگونه کار می کند پست الکترونیک.

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

    "پردازش در فتوشاپ" - بچه های باحال. چگونه تقلبی را تشخیص دهیم رستر و تصاویر برداری. معرفی. مکان های برتر برنامه Adobeفتوشاپ. روتوش. مسابقات فتوشاپ تنظیم روشنایی. دوستان من. بخش عملی برنامه های مشابه. بخش اصلی. طرح. حیوانات غیر معمول مونتاژ تصویر چندگانه

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

    قضیه نمونه‌برداری می‌گوید تحت چه شرایطی می‌توان یک تصویر پیوسته را با دقت از مجموعه‌ای از مقادیر گسسته بازیابی کرد. همچنین خواهیم آموخت که وقتی شرایط کاربردی آن برآورده نشود چه اتفاقی می افتد. همه اینها به طور مستقیم با توسعه سیستم های بصری مرتبط است.

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

    7.1. محدودیت اندازه تصویر

    در عمل، تصاویر همیشه دارای ابعاد محدود هستند. یک تصویر مستطیل شکل با عرض و ارتفاع R را در نظر بگیرید. حالا دیگر نیازی به گرفتن انتگرال در تبدیل فوریه در حد نامتناهی نیست.

    عجیب است، برای بازیابی عملکرد، ما نیازی به دانستن همه فرکانس ها نداریم. دانستن اینکه چه چیزی یک محدودیت سخت است. به عبارت دیگر، تابعی که فقط در ناحیه محدودی از صفحه تصویر غیرصفر است، نسبت به تابعی که این ویژگی را ندارد، حاوی اطلاعات بسیار کمتری است.

    برای تأیید این موضوع، تصور کنید که صفحه نمایش با کپی پوشانده شده است تصویر داده شده. به عبارت دیگر، تصویر خود را به تابعی گسترش می دهیم که در هر دو جهت تناوبی است

    در اینجا بزرگترین عدد صحیح کوچکتر از x است. تبدیل فوریه چنین تصویر ضرب شده ای شکل دارد

    با استفاده از مناسبعوامل همگرایی انتخاب شده در حالت قبلی 7.1 ثابت شده است که

    از این رو،

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

    توجه داشته باشید که تبدیل تابع تناوبی گسسته است. تبدیل معکوس را می توان به عنوان یک سری نشان داد، زیرا

    گسسته سازی تصویر

    یک تصویر پیوسته را در نظر بگیرید - تابعی از دو متغیر فضایی ایکس 1 و ایکس 2 f(ایکس 1 , ایکس 2) در یک منطقه مستطیلی محدود (شکل 3.1).

    شکل 3.1 - انتقال از یک تصویر پیوسته به یک تصویر گسسته

    اجازه دهید مفهوم مرحله گسسته Δ 1 را با توجه به متغیر فضا معرفی کنیم ایکس 1 و Δ 2 توسط متغیر ایکس 2. به عنوان مثال، می توان آن را در نقاط تصور کرد دوست از راه دوراز یکدیگر در فاصله Δ 1 در امتداد محور ایکسسنسورهای ویدئویی 1 نقطه ای قرار دارند. اگر چنین سنسورهای ویدئویی در کل منطقه مستطیلی نصب شوند، تصویر بر روی یک شبکه دو بعدی نشان داده می شود.

    برای کوتاه کردن نماد، نشان می دهیم

    تابع f(n 1 , n 2) تابعی از دو متغیر گسسته است و دنباله دو بعدی نامیده می شود. یعنی گسسته سازی تصویر بر حسب متغیرهای فضایی آن را به جدولی از مقادیر نمونه تبدیل می کند. بعد جدول (تعداد سطرها و ستون ها) با ابعاد هندسی مساحت مستطیل شکل اصلی و انتخاب مرحله گسسته سازی طبق فرمول تعیین می شود.

    جایی که براکت های مربع[...] قسمت صحیح یک عدد را نشان می دهد.

    اگر دامنه تصویر پیوسته مربع باشد L 1 = L 2 = Lو مرحله نمونه برداری در امتداد محورها یکسان انتخاب می شود ایکس 1 و ایکس 2 (Δ 1 = Δ 2 = Δ)، سپس

    و بعد میز است ن 2 .

    عنصری از جدول که با نمونه برداری از یک تصویر به دست می آید، نامیده می شود. پیکسل"یا " شمارش معکوس". یک پیکسل را در نظر بگیرید f(n 1 , n 2). این عدد مقادیر پیوسته می گیرد. حافظه کامپیوتر فقط می تواند اعداد مجزا را ذخیره کند. بنابراین، برای یک ورودی حافظه، یک مقدار پیوسته fباید تابع شود تبدیل آنالوگ به دیجیتالبا مرحله D f(شکل 3.2 را ببینید).

    شکل 3.2 - کمیت کردن یک کمیت پیوسته

    عملیات تبدیل آنالوگ به دیجیتال (گسسته سازی یک مقدار پیوسته بر اساس سطح) اغلب نامیده می شود. کوانتیزاسیون. تعداد سطوح کوانتیزاسیون، به شرطی که مقادیر تابع روشنایی در بازه _____ _____ ___ باشد، برابر است با

    در مسائل عملی پردازش تصویر، ارزش سبه طور گسترده ای متفاوت است س= 2 (تصاویر "دودویی" یا "سیاه و سفید") به س= 210 یا بیشتر (مقادیر روشنایی تقریباً پیوسته). اغلب انتخاب می شود س= 28، در حالی که پیکسل تصویر با یک بایت داده دیجیتال کدگذاری می شود. از تمام موارد فوق نتیجه می گیریم که پیکسل های ذخیره شده در حافظه کامپیوتر نتیجه گسسته سازی تصویر پیوسته اصلی از نظر آرگومان ها (مختصات؟) و سطوح هستند. (کجا و چقدر و همه چیز گسسته است) مشخص است که مراحل گسسته سازی Δ 1 , Δ 2 باید به اندازه کافی کوچک انتخاب شود تا خطای نمونه ناچیز باشد و نمایش دیجیتال اطلاعات اولیه تصویر را حفظ کند.

    در عین حال، باید به خاطر داشت که هر چه مرحله نمونه برداری و کوانتیشن کوچکتر باشد، مقدار داده های تصویری که باید در حافظه کامپیوتر ثبت شود بیشتر است. به عنوان نمونه ای از این عبارت، تصویری را روی یک اسلاید 50×50 میلی متری در نظر بگیرید که با استفاده از آن وارد حافظه شده است. متر دیجیتالچگالی نوری (ریزدانسیتومتر). اگر در هنگام ورودی، وضوح خطی ریزدانسیتومتر (مرحله نمونه برداری بر حسب متغیرهای مکانی) 100 میکرون باشد، آنگاه حافظه نوشته می شود. آرایه دو بعدیپیکسل های بعدی ن 2 = 500×500 = 25∙10 4 . اگر گام به 25 میکرون کاهش یابد، اندازه آرایه 16 برابر افزایش می یابد و ن 2 = 2000×2000 = 4∙10 6. با استفاده از کوانتیزه کردن 256 سطح، یعنی رمزگذاری پیکسل یافت شده توسط یک بایت، دریافتیم که در حالت اول 0.25 مگابایت حافظه برای ضبط و در حالت دوم 4 مگابایت نیاز است.

    تصاویر متشکل از عناصر گسسته، که هر یک می توانند فقط تعداد محدودی از مقادیر قابل تشخیص را که در یک زمان محدود تغییر می کنند، بگیرند، گسسته نامیده می شوند. لازم به تاکید است که عناصر یک تصویر گسسته، به طور کلی، ممکن است دارای مساحت نابرابر و هر یک از آنها دارای تعداد نامساوی درجه بندی های قابل تشخیص باشند.

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

    تداوم ظاهری آنها تنها یکی از توهمات چشم است. این "کوانتیزاسیون" تصاویر در اصل پیوسته با محدودیت هایی که با وضوح مرتبط است تعیین نمی شود سیستم نوریچشم ها و نه حتی عناصر ساختاری مورفولوژیکی سیستم بینایی، بلکه سازماندهی عملکردی شبکه های عصبی.

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

    قسمت مرکزی شبکیه (فووا) فقط توسط مخروط ها اشغال می شود ، در حاشیه خارج از فووئا هم مخروط ها و هم میله ها وجود دارد. در شرایط دید در شب، میدان های مخروطی در قسمت مرکزی شبکیه تقریباً به یک اندازه (حدود 5 "در اندازه زاویه ای)" هستند. حدود 200. نقش اصلی در شرایط دید در شب توسط میدان های میله ای ایفا می شود که بقیه سطح شبکیه را اشغال می کند. آنها دارای اندازه زاویه ای در حدود 1 درجه در کل سطح شبکیه هستند. تعداد چنین میدان هایی در شبکیه حدود 3000 است. نه تنها تشخیص، بلکه بررسی اجسام با نور کم در این شرایط توسط نواحی محیطی شبکیه انجام می شود.

    با افزایش روشنایی، سیستم دیگری از سلول های ذخیره سازی، میدان های گیرنده مخروطی، شروع به ایفای نقش اصلی می کند. در fovea، افزایش روشنایی باعث کاهش تدریجی قدرت میدان موثر می شود تا زمانی که در روشنایی حدود 100 asb، به یک مخروط کاهش می یابد. در حاشیه، با افزایش روشنایی، میدان های میله ای به تدریج خاموش می شوند (آهسته می شوند) و میدان های مخروطی وارد عمل می شوند. میدان‌های مخروطی در حاشیه، مانند میدان‌های فووئال، بسته به انرژی نوری که روی آنها فرو می‌رود، توانایی کاهش دارند. بیشترین تعدادمخروط هایی که میدان های گیرنده مخروطی می توانند با افزایش روشنایی داشته باشند، از مرکز تا لبه های شبکیه رشد می کنند و در فاصله زاویه ای 50-60 درجه از مرکز تقریباً به 90 می رسد.

    می توان محاسبه کرد که در شرایط نور خوب روز، تعداد میدان های پذیرنده به حدود 800 هزار می رسد. این مقدار تقریباً با تعداد فیبرهای عصب بینایی انسان مطابقت دارد. تمایز (رزولوشن) اشیاء در دید در روز عمدتاً در فووئا انجام می شود ، جایی که میدان گیرنده را می توان به یک مخروط کاهش داد و خود مخروط ها متراکم ترین قرار دارند.

    در حالی که می‌توان تعداد سلول‌های ذخیره‌سازی در شبکیه چشم را به یک تقریب رضایت‌بخش تعیین کرد، هنوز داده‌های کافی برای تعیین تعداد حالت‌های احتمالی میدان‌های پذیرنده وجود ندارد. فقط برخی تخمین ها را می توان بر اساس مطالعه آستانه های تفاضلی میدان های پذیرنده انجام داد. کنتراست آستانه در میدان‌های گیرنده فووئال در محدوده عملیاتی مشخصی از روشنایی از مرتبه 1 است. در این مورد، تعداد درجه‌بندی‌های قابل تشخیص کم است. در کل محدوده بازآرایی میدان پذیرای فووئال مخروطی، 8-9 درجه بندی متفاوت است.

    دوره انباشتگی در میدان پذیرنده - به اصطلاح مدت زمان بحرانی - به طور متوسط ​​با مقداری از مرتبه 0.1 ثانیه تعیین می شود، اما در سطوح بالاروشنایی ظاهراً می تواند به میزان قابل توجهی کاهش یابد.

    در واقع مدلی که ساختار گسسته را توصیف می کند تصاویر منتقل شده، باید حتی سخت تر باشد. لازم است رابطه بین ابعاد میدان پذیرنده، آستانه ها و مدت زمان بحرانی و همچنین ماهیت آماری آستانه های دیداری در نظر گرفته شود. اما در حال حاضر، این ضروری نیست. کافی است به عنوان یک مدل تصویر مجموعه‌ای از عناصر را از نظر مساحت یکسان تصور کنیم که ابعاد زاویه‌ای آن‌ها کوچک‌تر از ابعاد زاویه‌ای کوچک‌ترین جزئیات قابل تفکیک با چشم است و تعداد حالت‌های قابل تشخیص آن‌ها از حداکثر تعداد بیشتر است. درجه بندی روشنایی قابل تشخیص و زمان تغییر گسسته آن کمتر از دوره سوسو زدن در فرکانس همجوشی فلیکر بحرانی است.

    اگر تصاویر اجسام پیوسته واقعی دنیای خارج با چنین تصاویر گسسته ای جایگزین شوند، چشم متوجه این جایگزینی نخواهد شد. **

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

    عکاسی دیجیتال یا موارد دیگر بیت مپآرایه ای از اعداد است که توسط حسگرهای سطح روشنایی در یک صفحه دو بعدی گرفته شده است. با علم به اینکه از نقطه نظر ریاضی، یک لنز نازک تبدیل فوریه تصاویر قرار گرفته در صفحات کانونی را انجام می دهد، می توان الگوریتم های پردازش تصویر مشابه پردازش تصویر در یک سیستم نوری کلاسیک را ایجاد کرد.

    فرمول چنین الگوریتم هایی به صورت زیر خواهد بود:

    1. Z=FFT(X) – تبدیل فوریه دو بعدی مستقیم
    2. Z′=T(Z) – اعمال یک تابع یا شفافیت در تصویر فوریه تصویر
    3. Y=BFT(Z') – تبدیل فوریه دو بعدی معکوس
    تبدیل فوریه با استفاده از الگوریتم های تبدیل فوریه گسسته سریع محاسبه می شود. اگرچه سیستم نوری عدسی ها تبدیل فوریه را بر روی محدوده پیوسته آرگومان و برای طیف پیوسته انجام می دهد، اما هنگام عبور از پردازش دیجیتالداده ها، فرمول های تبدیل فوریه را می توان با فرمول های تبدیل فوریه گسسته جایگزین کرد.

    نمونه های پیاده سازی

    • الگوریتم تاری تصویر
    الگوریتم های پیاده سازی شده بخشی از یک کتابخانه منبع باز هستند. کد منبعابزارهای FFTT آدرس اینترنتی: github.com/dprotopopov/FFTTools

    الگوریتم تاری تصویر

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

    الگوریتم:

    1. آرایه Z′=T(Z) را محاسبه کنید، جایی که T صفر کردن سطرها و ستون های واقع در نواحی داخلی داده شده آرگومان ماتریس مربوط به فرکانس های بالا 5 است. (یعنی صفر شدن ضرایب بسط فوریه مربوطه به فرکانس های بالا)

    الگوریتم وضوح تصویر

    در سیستم های نوری، دیافراگم واقع در صفحه کانونی یک سوراخ ساده در صفحه نمایش است. در نتیجه عبور شار نور از دیافراگم، امواج فرکانس بالا (با طول موج کوتاهتر) از مانع عبور می کنند و امواج فرکانس پایین (با طول موج بلندتر) توسط صفحه قطع می شوند. این امر وضوح تصویر حاصل را بهبود می بخشد.

    الگوریتم:

    1. اجازه دهید X(N1,N2) آرایه ای از روشنایی پیکسل های تصویر باشد.
    2. Px = میانگین (rms) روشنایی پیکسل ها در آرایه X را محاسبه کنید
    3. محاسبه آرایه Z=FT(X) - تبدیل فوریه گسسته دو بعدی مستقیم
    4. مقدار L=Z(0,0) را ذخیره کنید - مربوط به میانگین روشنایی پیکسل ها در تصویر اصلی
    5. آرایه Z′=T(Z) را محاسبه کنید، جایی که T صفر کردن سطرها و ستون های واقع در نواحی بیرونی داده شده ماتریس آرگومان مربوط به فرکانس های کم 6 است (یعنی صفر شدن ضرایب بسط فوریه مربوط به فرکانس های پایین)
    6. بازیابی مقدار Z'(0,0)=L - مربوط به میانگین روشنایی پیکسل های تصویر اصلی
    7. محاسبه آرایه Y=RFT(Z') – تبدیل فوریه گسسته 2 بعدی معکوس
    8. Py = میانگین (rms) روشنایی پیکسل ها در آرایه Y را محاسبه کنید
    9. آرایه Y(N1,N2) را با میانگین سطح روشنایی Px/Py عادی کنید

    الگوریتم مقیاس بندی تصویر

    در سیستم های نوری، شار نور در صفحه کانونی سیستم تبدیل فوریه تصویر اصلی است. اندازه تصویر به دست آمده در خروجی سیستم نوری با نسبت فاصله کانونی هدف و چشمی تعیین می شود.

    الگوریتم:

    1. اجازه دهید X(N1,N2) آرایه ای از روشنایی پیکسل های تصویر باشد.
    2. Px = میانگین (rms) روشنایی پیکسل ها در آرایه X را محاسبه کنید
    3. محاسبه آرایه Z=FT(X) - تبدیل فوریه گسسته دو بعدی مستقیم
    4. آرایه Z′=T(Z) را محاسبه کنید، جایی که T یا صفر ردیف و ستون ماتریس مربوط به فرکانس‌های بالا را اضافه می‌کند، یا ردیف‌ها و ستون‌های ماتریس مربوط به فرکانس‌های بالا را حذف می‌کند تا اندازه مورد نیاز تصویر نهایی به دست آید.
    5. محاسبه آرایه Y=RFT(Z') – تبدیل فوریه گسسته 2 بعدی معکوس
    6. Py = میانگین (rms) روشنایی پیکسل ها در آرایه Y را محاسبه کنید
    7. آرایه Y(M1,M2) را با میانگین سطح روشنایی Px/Py عادی کنید
    نرم افزار استفاده شده
    • مایکروسافت استودیوی تصویری 2013 سی شارپ - محیط و زبان برنامه نویسی
    • EmguCV/OpenCV - کتابخانه C++ از ساختارها و الگوریتم‌ها برای پردازش تصویر
    • FFTWSharp/FFTW – کتابخانه C++ پیاده‌سازی الگوریتم‌های سریع تبدیل فوریه گسسته

    الگوریتم تاری تصویر

    کد الگوریتم

    ///

    /// پاک کردن ناحیه داخلی آرایه /// /// آرایه ای از مقادیر /// اندازه ناحیه کور داخلیخصوصی استاتیک void Blind(Complex[,] data, Size size) (int n0 = data.GetLength(0)؛ int n1 = data.GetLength(1)؛ int n2 = data.GetLength(2)؛ int s0 = Math. Max(0، (n0 - size.Height)/2); int s1 = Math.Max(0، (n1 - size.Width)/2); int e0 = Math.Min((n0 + size.Height)/ 2، n0؛ int e1 = ریاضی. حداقل ((n1 + اندازه. عرض)/2، n1)؛ برای (int i = s0؛ i< e0; i++) { Array.Clear(data, i*n1*n2, n1*n2); } for (int i = 0; i < s0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } } /// /// تار کردن بیت مپ با سریعترین تبدیل فوریه /// /// بیت مپ تار شدهعمومی Bitmap Blur (Bitmap bitmap) ( با استفاده از (var image = new image (bitmap)) ( int length = image.Data.Length؛ int n0 = image.Data.GetLength(0)؛ int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (دو برابر)); توان دو برابر = Math.Sqrt(doubles.Average(x => x*x));var ورودی = fftw_complexarray new(doubles.Select(x => new Complex(x, 0)).ToArray())؛ var output = new fftw_complexarray(طول)؛ fftw_plan.dft_3d(n0، n1، n2، ورودی، خروجی، fftw_direction. Forward, fftw_flags.Estimate).Execute(); مجتمع پیچیده= output.GetData_Complex(); var data = new Complex; varbuffer = new double; GCHandle complexHandle = GCHandle.Alloc(complex، GCHandleType.Pinned); GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal.Copy (بافر، 0، dataPtr، بافر. طول)؛ Blind(data, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); ComplexHandle.Free(); dataHandle.Free(); input.SetData(complex); fftw_plan.dft_3d(n0، n1، n2، ورودی، خروجی، fftw_direction.Backward، fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(array2.Average(x => x*x)); doubles = array2.Select(x =>

    الگوریتم وضوح تصویر

    کد الگوریتم

    ///

    /// پاک کردن ناحیه خارجی آرایه /// /// آرایه ای از مقادیر /// اندازه ناحیه کور خارجیخصوصی استاتیک void Blind(Complex[,] data, Size size) (int n0 = data.GetLength(0)؛ int n1 = data.GetLength(1)؛ int n2 = data.GetLength(2)؛ int s0 = Math. Max(0، (n0 - size.Height)/2); int s1 = Math.Max(0، (n1 - size.Width)/2); int e0 = Math.Min((n0 + size.Height)/ 2، n0؛ int e1 = ریاضی. حداقل ((n1 + اندازه. عرض)/2، n1)؛ برای (int i = 0؛ i< s0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } } /// /// بیت مپ شارپ با سریعترین تبدیل فوریه /// /// بیت مپ تیز شدهعمومی Bitmap Sharp (Bitmap bitmap) ( با استفاده از (var image = new image (bitmap)) ( int length = image.Data.Length؛ int n0 = image.Data.GetLength(0)؛ int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (دو برابر)); توان دو برابر = Math.Sqrt(doubles.Average(x => x*x));var ورودی = fftw_complexarray new(doubles.Select(x => new Complex(x, 0)).ToArray())؛ var output = new fftw_complexarray(طول)؛ fftw_plan.dft_3d(n0، n1، n2، ورودی، خروجی، fftw_direction. Forward, fftw_flags.Estimate).Execute(); Complex Complex = output.GetData_Complex(); Complex level = پیچیده؛ var data = new Complex؛ var buffer = new double؛ GCHandle complexHandle = GCHandle.Alloc(complex, GCHandleType.Pinned) ؛ GCHandle dataHandle = GCHandle.Alloc (داده، GCHandleType.Pinned)؛ IntPtr complexPtr = complexHandle.AddrOfPinnedObject()؛ IntPtr dataPtr = dataHandle.AddrOfPinnedObject();Marshal.complexTr. کپی (بافر، 0، dataPtr، بافر. طول)؛ Blind(data, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); ComplexHandle.Free(); dataHandle.Free(); مجتمع = سطح input.SetData(complex); fftw_plan.dft_3d(n0، n1، n2، ورودی، خروجی، fftw_direction.Backward، fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(array2.Average(x => x*x)); doubles = array2.Select(x => x*power/power2).ToArray(); Buffer.BlockCopy (دو برابر، 0، تصویر. داده، 0، طول*اندازه (دو برابر)); بازگشت تصویر.بیت مپ; ))

    الگوریتم مقیاس بندی تصویر

    کد الگوریتم

    ///

    /// کپی آرایه ها /// /// آرایه ورودی /// آرایه خروجیخصوصی استاتیک کپی (Complex[,] ورودی، Complex[،] خروجی) (int n0 = input.GetLength(0)؛ int n1 = input.GetLength(1); int n2 = input.GetLength(2); int m0 = output.GetLength(0);int m1 = output.GetLength(1);int m2 = output.GetLength(2);int ex0 = Math.Min(n0, m0)/2;int ex1 = Math.Min(n1 , m1)/2;int ex2 = Math.Min(n2, m2);Debug.Assert(n2 == m2);for (int k = 0;k< ex2; k++) { for (int i = 0; i <= ex0; i++) { for (int j = 0; j <= ex1; j++) { int ni = n0 - i - 1; int nj = n1 - j - 1; int mi = m0 - i - 1; int mj = m1 - j - 1; output = input; output = input; output = input; output = input; } } } } /// /// تغییر اندازه بیت مپ با سریعترین تبدیل فوریه /// /// تغییر اندازه بیت مپعمومی Bitmap Stretch (Bitmap bitmap) ( با استفاده از (var image = new image (bitmap)) ( int length = image.Data.Length؛ int n0 = image.Data.GetLength(0)؛ int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (دو برابر)); توان دو برابر = Math.Sqrt(doubles.Average(x => x*x));var ورودی = fftw_complexarray new(doubles.Select(x => new Complex(x, 0)).ToArray())؛ var output = new fftw_complexarray(طول)؛ fftw_plan.dft_3d(n0، n1، n2، ورودی، خروجی، fftw_direction. Forward, fftw_flags.Estimate).Execute()؛ Complex Complex = output.GetData_Complex()؛ با استفاده از (var image2 = new Image (_newSize)) ( int length2 = image2.Data.Length؛ int m0 ​​= image2.Data.GetLength(0); int m1 = image2.Data.GetLength(1); int m2 = image2.Data.GetLength(2 var complex2 = جدید Complex؛ var data = New Complex؛ var data2 = New Complex؛ var buffer = new double؛ GCHandle complexHandle = GCHandle.Alloc(complex, GCHandleType.Pinned)؛ GCHandle dataHandle = GCHandle.Alloc(داده، GCHandleType .Pinned)؛ IntPtr complexPtr = complexHandle.AddrOfPinnedObject()؛ IntPtr dataPtr = dataHandle.AddrOfPinnedObject()؛ Marshal.Copy(complexPtr، بافر، 0، بافر. طول)؛ Marshal,P.Copy. ComplexHandle.Free(); dataHandle.Free()؛ Copy(data, data2)؛ بافر = new double؛ complexHandle = GCHandle.Alloc(complex2، GCHandleType.Pinned)؛ dataHandle = GCHandle.Alloc(data2، GCHandleType.P.in ComplexPtr = complexHandle.AddrOfPinnedObject(); dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complex Ptr, buffer.Leng); ComplexHandle.Free(); dataHandle.Free(); var input2 = new fftw_complexarray(complex2); var output2 = new fftw_complexarray(length2); fftw_plan.dft_3d(m0, m1, m2, input2, output2, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output2.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(array2.Average(x => x*x)); double doubles2 = array2.Select(x => x*power/power2).ToArray(); Buffer.BlockCopy(doubles2, 0, image2.Data, 0, length2*sizeof (double)); بازگشت تصویر2.بیت مپ. ))))