Реферат по предмету "Информатика, программирование"


Програма обробки зображень

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНІЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ„ХПІ”
Кафедра „Обчислювальна техніка тапрограмування”
ПРОГРАМА ОБРОБКИ ЗОБРАЖЕНЬ
Альбом документів курсового проектупо дисципліні
«Спеціалізовані комп’ютернісистеми»
КІТ32.02198.022 ДКП
Керівник проекту:
___________ /Xxxxxxxxxx./
Виконав:
студент групи XXXX
____________________/Xxxxxxxxxx./
„ __” ___________________ 2007 р.
Харків 2007

АНОТАЦІЯ
В даному курсовому проекті розроблена програма обробкизображень, що дає можливість фільтрувати зображення.
SUMMARY
In the given course project is designed program processingimages, which can image filtering.
МІНІСТЕРСТВООСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНІЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ„ХПІ”
Кафедра „Обчислювальна техніка тапрограмування”
ЗАТВЕРДЖУЮ
Завідувач кафедри ОТП
_________________ /Домнін Ф.А./
„__” ______________ 2007
Програма обробки зображень
Специфікація
ЛИСТ ЗАТВЕРДЖЕННЯКІТ32.02198.022 ЛЗ
Керівник проекту:
__________________/Xxxxxxxxxx./
Виконав:
студент групи XXXXа
____________________/Xxxxxxxxxx./
„ __” ___________________ 2007 р.
Харків 2007
МІНІСТЕРСТВООСВІТИ І НАУКИ УКАЇНИ
НАЦІОНАЛЬНИЙТЕХНІЧНИЙ УНІВЕРСИТЕТ
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “ Обчислювальна техніка іпрограмування”ЗАТВЕРДЖУЮ
Завідувач кафедрою ОТП
/проф. Домнін Ф.А./
“ “ 2007р.
Програма обробки зображеньТехнічне завдання
КІТ32.02198.022 ТЗРозробникиКерівник проекту
/Xxxxxxxxxx./
“ ” 2007р.
Виконавець
/ студ. Xxxxxxxxxx./
“ ” 2007р.
Харків 2007
ЗМІСТ
Вступ
1.      Підставидо розробки
2.      Призначеннядо розробки
3.      Вимоги допрограмного продукту
3.1 Функціональніхарактеристики
3.2 Склад та параметритехнічних засобів
3.3 Інформаційна та програмнасполучність
4.      Стадіїрозробки
5.      Програмнадокументація
6.      Порядокконтролю та приймання

ВСТУП
Програмний продукт під назвою „Програма обробки зображень”призначено для фільтрації зображення.
При створенні програми використовувалось середовище VISUALSTUDIO 2005.

1 ПІДСТАВИ ДО РОЗРОБКИ
Розробка проводиться у відповідності до графіку навчальногоплану на 2007 р. з курсу «Спеціалізовані комп’ютерні системи».
Тема проекту: «Програма обробки зображень».

2 ПРИЗНАЧЕННЯ РОЗРОБКИ
Програмний продукт призначений для фільтрації зображення.

3 ВИМОГИ ДО ПРОГРАМНОГО ПРОДУКТУ
 
3.1 Функціональні характеристики
 
Програмний продукт має забезпечити виконання наступних дій:
·    Відкриватизображення різних форматів (GIF, JPEG, PNG,);
·    Можливістьперегляду зображення
·    Вивідрезультатів;
·    Можливістьзберігання результатів конвертації.
3.2 Склад та параметри технічнихзасобів
Функціонування програми забезпечується:
ПК х86, з 128 Мбоперативної пам‘яті, встановленою системою Windows 98/МЕ/2000/ХР, та не менш 2Мб вільного місця на жорсткому диску.
3.3 Інформаційна та програмнасполучність
Програмний продукт повинен коректно функціонувати підкеруванням ОС Microsoft Windows 98/NT/2000/XP. Програмний продукт має назву „Програмаобробки зображень” і повинен бути написаний мовою С#.

4. Стадії розробки
·    Технічнезавдання;
·    Технічнийпроект.

5. ПРОГРАМНА ДОКУМЕНТАЦІЯ
Для розроблюваного об’єкту повинні бути зроблені програмнідокументи:
— Специфікація;
— Технічне завдання;
— Пояснювальна записка;

6. ПОРЯДОК КОНТРОЛЮ ТА ПРИЙМАННЯ
Розроблений програмний продукт має виконувати всі вимоги, щоскладаються з перерахованих у п.3.1 характеристиках.
Приймання проводиться керівником проекту й затверджується викладачем.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”Кафедра “Обчислювальна техніка та програмування “
ЗАТВЕРДЖУЮ
Завідувач кафедрою ОТП
___________ /Домнін Ф.А./
Програма обробки зображень
Пояснювальна записка
ЛИСТ ЗАТВЕРДЖЕННЯКІТ 32.02198.022ЛЗ
Розробники
Керівник проекту
_________/Xxxxxxxxxx./
“___” ___________2007р.
Виконавець
________/студ. Xxxxxxxxxx./
“____”__________2007р.
Харків 2007

Зміст
Вступ
1. Призначення та галузьзастосування
2.Технічні характеристики
2.3 Фільтрація зображень
2.4 Опис алгоритму і функціонуванняпрограми
2.5 Опис та обґрунтуваннявибору складу технічних та програмних засобів
3. Опис інтерфейсу програми
4. Перевірка функціонуванняпрограми
Висновки
Джерела, що використані прирозробці
Додаток 1. Лістинг програми

ВСТУП
У останній час актуальною задачею є обробка зображень. Доволі частонеобхідно фільтрувати зображення.

1.      ПРИЗНАЧЕННЯ ТА ГАЛУЗЬ ЗАСТОСУВАННЯ
 
Даний курсовий проект призначений для розробки програмиобробки зображень.
Цей проект може бути використана для наукових досліджень або можевиступати як посібник.
Курсовий проект розроблений на підставі технічного завданнята методичних вказівок до виконання та оформлення курсового проекту .

2.      ТЕХНІЧНІ ХАРАКТЕРИСТИКИФільтрація зображень
Реальні зображення поряд з корисною інформацією містять різніперешкоди. Джерелами перешкод є власні шуми фотоприйомних пристроїв,зернистість фотоматеріалів, шуми каналів зв'язку. Нарешті, можливі геометричніперекручування, зображення може бути розфукусовано. Нехай f (x,y) – деякезображення, х, у – координати. Реальне растрове зображення має кінцеві розміри:A ≤ x ≤ B, C ≤ y ≤ D і складається з окремих пікселів,розташованих з деяким кроком у вузлах прямокутної сітки. Лінійне перетвореннязображення можна описати вираженням
/>                                           (2)
Вираження (2), де інтегрування ведеться по всій області визначення x і y,характеризує перетворення всього зображення цілком  глобальнуфільтрацію. Ядро перетворення h1 (x,y, х', у')в оптику іменуютьфункцією розсіювання крапки (ФРТ). Це зображення крапкового джерела на виходіоптичної системи, що вже є не крапкою, а деякою плямою. Відповідно до (2), усікрапки зображення f (х', у') перетворюються в плями, відбувається підсумовування(інтегрування) усіх плям. Не слід думати, що ця процедура обов'язково приводитьдо розфукусування зображення, навпаки, можна підібрати таку ФРТ, що дозволитьсфокусувати розфукусоване зображення.
На мал. 5 представлена одна з можливих ФРТ. Узагалі говорячи, ФРТвизначена на ( ∞
/>
На практиці глобальна фільтрація застосовується рідко. Частішевикористовують локальну фільтрацію, коли інтегрування й усереднення проводитьсяне по всій області визначення x і y, а по порівняно невеликій околиці кожноїкрапки зображення. Функція розсіювання крапки при цьому має обмежені розміри.Достоїнством такого підходу є гарна швидкодія. Лінійне перетворення приймаєвид:
/>                                                                     (3)
При обробці растрових зображень, що складаються з окремих пікселів,інтегрування замінене підсумовуванням. Найпростіше реалізувати ФРТ кінцевихрозмірів у виді прямокутної матриці форматом NN. N може бути рівним 3,5, 7 і т.д. Наприклад, при N = 3
/>
Підсумовування ведеться по околиці D крапки (i, j); akl значення ФРТ у цій околиці. Яскравості пікселів f у цій крапці й у її околицізбільшуються на коефіцієнти akl, перетворена яскравість (i,j) гопиксела є сума цих добутків. Елементи матриці задовольняють умові просторовоїінваріантості, тому a11= a13 =a31= a33,a12 = a21= a23 = a32. Тільки триелементи матриці розміром 3х3 незалежні, у цьому випадку матриця інваріантнащодо поворотів, кратних 90˚. Досвід обробки зображень показує, щовідсутність більш строгої осьової симетрії ФРТ слабко позначається нарезультатах. Іноді використовують 8вугільні матриці, інваріантні щодоповоротів на 45˚.
Фільтрація згідно (3) здійснюється переміщенням ліворуч праворуч (абозверху вниз) маски на один пиксел. При кожнім положенні апертури виробляютьсязгадані вище операції, а саме перемножування вагових множників akl звідповідними значеннями яскравості вихідного зображення і підсумовуваннямдобутків. Отримане значення привласнюється центральному (i,j) мупікселу. Звичайно це значення поділяється на заздалегідь задане число K(нормуючий множник). Маска містить непарне число рядків і стовпців N, щобцентральний елемент визначався однозначно.
Розглянемо деякі фільтри, що згладжують шум. Нехай маска розміром 3х3має вигляд:
/>
Тоді яскравість (i,j) -го піксела після фільтрації визначиться як
/>
Хоча коефіцієнти akl можна вибрати зі середньоквадратичногоабо іншої умови близькості не перекрученого шумом si,j іперетвореного gi,j зображень, звичайно їхній задають евристично.Приведемо ще деякі матриці фільтрів, що придушують шум:
/>

У фільтрів H1  H4 множники, що нормують,K підібрані таким чином, щоб не відбувалося зміни середньої яскравостіобробленого зображення. Поряд з масками 3х3 використовуються маски більшоїрозмірності, наприклад, 5х5, 7х7 і т.п. На відміну від фільтра H2, уфільтрів H1, H3, H4 агарні коефіцієнти наперетинанні головних діагоналей матриці більше, ніж коефіцієнти, що коштують напериферії. Фільтри H1, H3, H4 дають більшплавна зміна яскравості по зображенню, чим H2.
Нехай відліки корисного зображення fk,m мало міняються вмежах маски. На зображення накладається аддітівный шум: fk,m + nk,m, відліки шуму nk,m випадкові і незалежні (або слабко залежні)зі статистичної точки зору. У цьому випадку механізм придушення шуму звикористанням приведених фільтрів полягає в тому, при підсумовуванні шумикомпенсують один одного. Ця компенсація буде відбуватися тим краще, чим більшечисло членів у сумі, тобто чим більше розмір (апертура) маски. Нехай,наприклад, використовується маска NN, у межах її корисне зображення маєпостійну яскравість f, шум з незалежними значеннями відліків nk,m,середнім значенням м = 0 і дисперсією у2 у межах маски (такий шумназивають білим). Відношення квадрата яскравості (i,j)-го піксела до дисперсіїшуму, тобто відношення сигнал/шум, дорівнює f2/у2.
Розглянемо, наприклад, маску типу H2:
/>
Середній квадрат яскравості дорівнює f 2, середній квадратінтенсивності шуму
/>

Подвійна сума відповідає k= p, m = q, ця сума дорівнює у2/N 2.Чотириразовасума дорівнює нулеві, тому що відліки шуму при k ≠ p, m ≠ q незалежні: = 0. У результаті фільтраціївідношення сигнал/шум стає рівним N 2f 2/у2,тобто зростає пропорційно площі маски. Відношення яскравості (i,j)-го пікселакорисного зображення до середньоквадратичного відхилення шуму зростаєпропорційно N. Застосування маски 3х3, у середньому, підвищує відношеннясигналу до шуму в 9 разів.
При імпульсній перешкоді механізм придушення полягає в тому, що імпульс«розпливається» і стає мало помітним на загальному тлі.
Однак часто в межах апертури значення корисного зображення все-такизмінюються помітним образом. Це буває, зокрема, коли до маски попадаютьконтури. З фізичної точки зору, усі H1  H4 є фільтраминижніх частот (зсереднюючими фільтрами), що придушують високочастотні гармонікиі шуму, і корисного зображення. Це приводить не тільки до ослаблення шуму, алеі до розмивання контурів на зображенні. На мал. 6а показане вихідне зашумленезображення, результат застосування фільтра типу Н2 приведений намал. 6б (маска 5х5).
/>

Розглянута вище фільтрація характеризувалася тим, що вихідні значенняфільтра g визначалися тільки через вхідні значення фільтра f. Такі фільтриназиваються не рекурсивними. Фільтри, у яких вихідні значення g визначаються нетільки через вхідні значення f, але і через відповідні вихідні значення,називаються рекурсивними.
При рекурсивній фільтрації можна зберігати тіж значення вагових множників, що і приведені вище, існують рекурсивні фільтризі спеціально підібраними множниками. Елементи вхідного зображення в межахвікна зміняться і приймуть вид:
/>
Вагарні і що нормує множники рекурсивного фільтра залежать від місцярозташування маски; рекурсивний локальний фільтр дозволяє враховувати усівхідні значення фільтруємого зображення, тобто наближається по своїй дії доглобального фільтра.
Для усунення ефекту розмивання контурів при придушенні шуму вартопереходити до нелінійної обробки. Прикладом нелінійного фільтра для придушенняшуму служить медіанний фільтр. При медіанній фільтрації (i,j)-му пікселупривласнюється медіанне значення яскравості, тобто таке значення, частота якогодорівнює 0,5. Нехай, наприклад, використовується маска 33, у межі якоїпоряд з більш-менш рівномірним тлом потрапив шумовий викид, цей викид довелосяна центральний елемент маски:
/>

Будується варіаційний ряд. Варіаційним рядом V1,..., Vnвибірки f1,..., fn називають упорядковану по не убуваннюпослідовність елементів вибірки, тобто V1 = min(f1,..., fn),Vn= max (f1,..., fn) і т.д. У нашому випадкуваріаційний ряд має вигляд: 63, 66, 68, 71, 74, 79, 83, 89, 212. Тут медіаннезначення  п'яте по рахунку (підкреслене), тому що всього чисел у ряді9. При медіанній фільтрації значення 212, перекручене шумовим викидом,заміняється на 74, викид на зображенні цілком подавлений. Результатзастосування медіанного фільтра показаний на мал. 6в.
Функція розсіювання крапки для медіанного фільтра є нуль. При розмірахвікна (2k+1)·(2k+1) відбувається повне придушення перешкод, що складаються небільш, ніж з 2(k2 + k) пікселів, а також тих, котрі перетинаються небільш, з k рядками або k стовпцями, При цьому не змінюється яскравість украпках тла. Зрозуміло, при медіанній фільтрації може відбуватисяперекручування об'єкта на зображенні, але тільки на границі або поблизу неї,якщо розміри об'єкта більше розмірів маски. Фільтр має високу ефективність припридушенні імпульсних перешкод, однак ця якість досягається підбором розмірівмаски, коли відомі мінімальні розміри об'єктів і максимальні розміриперекручених перешкодою локальних областей. Виділення контурів
Лінійні фільтри можуть бути призначені не для придушення шуму, а дляпідкреслення перепадів яскравості і контурів. Виділення вертикальних перепадівздійснюється диференціюванням по рядках, горизонтальних  по стовпцях.Диференціювання виробляється в цифровій формі:
/>
Тут ∆x=1? збільшення уздовж рядка, рівне 1 пікселу,
?y=1? збільшення уздовж стовпця, також рівне 1 пікселу.
Виділення перепадів по діагоналі можна одержати, обчислюючи різницірівнів діагональних пар елементів.
Для виділення перепадів використовуються наступні набори ваговихмножників, що реалізують двовимірне диференціювання:
Північ північний схід схід південний схід
/>
південь південний захід захід        північний захід
/>
Назва географічних напрямків говорить про напрямок схилу перепаду, щовикликає максимальний відгук фільтра. Сума вагових множників масок дорівнюєнулеві, тому на ділянках зображення з постійною яскравістю ці фільтри даютьнульовий відгук.
Виділення горизонтального перепаду можна виконати також шляхомобчислення збільшення різниці яскравості пікселів уздовж рядка, що рівноціннообчисленню другої похідної по напрямку (оператор Лапласа):
/>
Це відповідає одномірній масці Н = | 1 2 1|, сумавагових множників дорівнює нулеві. У такий же спосіб можна шукати перепади повертикалі і по діагоналі. Для виділення перепадів без обліку їхньої орієнтаціївикористовуються двовимірні оператори Лапласа:

/>
Тут сума вагових множників також дорівнює нулеві. На мал. 7 приведеневихідне зображення і результат застосування оператора Лапласа Н13.
Оператори Лапласа реагують на перепади яскравості у виді східчастогоперепаду і на «дахоподібний» перепад. Вони також виділяє ізольованікрапки, тонкі лінії, їхні кінці і гострі кути об'єктів. Лінія підкреслюється в2 рази яскравіше, ніж східчастий перепад, кінець лінії в 3 рази, а крапка у 4 рази яскравіше. Оператор Лапласа не інваріантний до орієнтації перепадів:наприклад, відгук оператора на похилий перепад у діагональному напрямку майжевдвічі більше, ніж у горизонтальному і вертикальному.
З фізичної точки зору, фільтри H5  H15 єфільтрами верхніх частот, вони виділяють високочастотні складові корисногозображення, відповідальні за перепади яскравості і контури і придушують«постійну складову». Однак при їхньому використанні рівень шуму назображенні зростає.
Фільтри для виділення перепадів і границь, як і фільтри H1 H4 для придушення шуму, можуть бути рекурсивними.
Зображення з підкресленими границями (контурами) суб'єктивносприймається краще, ніж оригінал. Відбувається фокусування частковорозфукусованого зображення. При використанні оператора Лапласа для цих цілейзастосовують три типових набори вагарень множників:
/>

H16  H18 відрізняються від фільтрів H13 H15 тим, що до центрального елемента матриці додана 1,тобто при фільтрації вихідне зображення накладається на контур.
Для виділення контурів і перепадів яскравості можуть застосовуватисянелінійні фільтри. У нелінійних алгоритмах використовують нелінійні операторидискретного диференціювання. У фільтрі Робертса використовується маска, щопереміщається 2:
/>
диференціювання виробляється за допомогою одного з виражень
/>
/>
/>
У фільтрі Собела використовується вікно 33:
/>
Центральному (i,j) -му пікселу замість f i,j привласнюєтьсязначення яскравості />або /> , де
/>
На мал. 8 показані результати застосування фільтра Собела.
2.4.   Опис та обґрунтування виборускладу технічних та програмних засобів
Згідно з поставленою задачею оберемо технічні та програмнізасоби реалізації програми. Програма написана на мові програмування високогорівня (С#). Дана програма розрахованана операційні системи Windows 2000, NT, XP звстановленою середою .NET 2.0 чи 3.0.

3.      Опис інтерфейсу програми
Програма має зручний та доступний інтерфейс для роботи зкористувачем. На рис. 1 показано вигляд вікна спілкування з користувачем до початку роботи з програмою.
/>
Рис.1. Зображення діалоговоговікна програми.
За допомогою меню „Файл” користувач має можливість відкритифайл з зображенням. У першій частині робочого вікна ми маємо змогу бачити нефільтроване зображення. Також меню „Файл” надає можливість зберегти файл підвибраним чи іншим ім’ям.
Меню „Фильтровать” надає змогу відфільтрувати зображення. Вінмає наступні підменю
1. Лапласіан
2. Гаусовий
3. Smoothing
4. Довільне ядро
Після обрання будь-якого пункту меню на екран виводитьсявікно з ядром
/>
Рис 2. Вікно з ядром
При натисненні на кнопку „ОК” ми бачимо вікно, що виводитьсяпід час обрахунків.
/>
Рис.3 Вікно, що повідомляє про проходження обрахунків
Після виконання обрахунків ми бачимо на головному вікні удругій його частині фільтроване зображення, відповідно до обраної фільтрації.
Також, користувач має можливість власноруч заповнити матрицюз коефіцієнтами.
Далі наведені результати роботи програми з різними фільтрами:

4. Перевірка функціонування програми
Програма повністю відповідає наведеному вище алгоритму.

ВИСНОВКИ
Розробивши програмну модель обробки файлів зображень, ядійшов висновку, що найбільша складність у подібних задачах є розробка доситьуніверсального алгоритму та оформлення результатів (введення та вивід).
ДЖЕРЕЛА, ЩОВИКОРИСТАНІ ПРИ РОЗРОБЦІ
1.              В.Б.Жушма, Ф. Колокольцев, Р.Коринь, Ю. Мевшин, Т. Мовчан, Л.Д. Писаренко, Ю. Путилов. Роздільнеунітарне перетворення зображень, УЖ МТиТ1999 № 2-3.
2.              В, Б,Жушма, Ф. Колокольцев, Р, Корннь, Ю, Мевшнн, Т.В, Мовчан, Л.Д. Писаренко, Ю.Путилов. Сингулярне перетворення зображень, УЖ МТиТ 1999 №4.
3.              http://msdn2.microsoft.com/ru-ru/default.aspx

ДОДАТОК1
 
ЛІСТИНГ ПРОГРАМИ
MainForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Kursach
{
 public partial class MainForm: Form
 {
 private string filename = "";
 WaitForm win = null;
 public MainForm()
 {
 InitializeComponent();
 }
 private void ExitToolStripMenuItem_Click(object sender,EventArgs e)
 {
 this.Close();
 }
 private void OpenToolStripMenuItem_Click(object sender,EventArgs e)
 {
 if (openFileDialog.ShowDialog() == DialogResult.OK)
 picture.Image = new Bitmap(filename =openFileDialog.FileName);
 }
 private void SaveAsToolStripMenuItem_Click(object sender,EventArgs e)
 {
 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
 picture.Image.Save(filename = saveFileDialog.FileName);
 }
 }
 private void SaveToolStripMenuItem_Click(object sender,EventArgs e)
 {
 picture.Image.Save(filename);
 }
 private void лапласианToolStripMenuItem_Click(object sender, EventArgs e)
 {
 Start(false);
 }
 public void Start(bool edit) where T: IKernel,new()
 {
 IKernel kernel = new T();
 Bitmap bitmap = new Bitmap(picture.Image);
 if (new KernelForm(false, kernel).ShowDialog() ==DialogResult.OK)
 {
 win = new WaitForm(backgroundWorker);
 win.Show(this);
 backgroundWorker.RunWorkerAsync(new StartParam(bitmap,kernel));
 }
 }
 private void smoothingToolStripMenuItem_Click(object sender,EventArgs e)
 {
 Start(false);
 }
 private void гаусовыйToolStripMenuItem_Click(object sender, EventArgs e)
 {
 Start(false);
 }
 private void CustomToolStripMenuItem_Click(object sender,EventArgs e)
 {
 Start(true);
 }
 private void backgroundWorker_DoWork(object sender,DoWorkEventArgs e)
 {
 StartParam s = (StartParam)e.Argument;
 pictureF.Image = Filter.Filtering(s.b, s.k.Kernel,backgroundWorker);
 }
 private void backgroundWorker_ProgressChanged(object sender,ProgressChangedEventArgs e)
 {
 win.progressBar.Value = e.ProgressPercentage;
 }
 private void backgroundWorker_RunWorkerCompleted(objectsender, RunWorkerCompletedEventArgs e)
 {
 win.Close();
 }
 }
 class StartParam
 {
 public Bitmap b = null;
 public IKernel k = null;
 public StartParam(Bitmap b, IKernel k)
 {
 this.b = b;
 this.k = k;
 }
 }
}
WaitForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Kursach
{
 public partial class WaitForm: Form
 {
 BackgroundWorker bw;
 public WaitForm(BackgroundWorker bw)
 {
 InitializeComponent();
 this.bw = bw;
 }
 private void button1_Click(object sender, EventArgs e)
 {
 this.Close();
 }
 private void WaitForm_FormClosing(object sender,FormClosingEventArgs e)
 {
 if (bw.IsBusy)
 bw.CancelAsync();
 }
 }
}
KernelForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Kursach
{
 public partial class KernelForm: Form
 {
 private bool allowEdit = false;
 public bool AllowEdit
 {
 get { return allowEdit; }
 set
 {
 allowEdit = value;
 kernelgrid.ReadOnly = !value;
 }
 }
 public KernelForm(bool editable, IKernel kernel)
 {
 InitializeComponent();
 for (int i = 0; i
 {
 kernelgrid.Rows.Add();
 for (int j = 0; j
 {
 kernelgrid.Rows[i].Cells[j].Value =kernel.Kernel.GetValue(i, j);
 }
 }
 this.Text = kernel.Text;
 AllowEdit = editable;
 }
 private void butCancel_Click(object sender, EventArgs e)
 {
 this.Close();
 }
 private void butOK_Click(object sender, EventArgs e)
 {
 DialogResult = DialogResult.OK;
 this.Close();
 }
 }
}
Filter.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;
namespace Kursach
{
 static class Filter
 {
 public static Bitmap Filtering(Bitmap img, int[,] kernel,BackgroundWorker bw)
 {
 int[,] Mk = (int[,])kernel.Clone();
 int[] H = new int[kernel.Length];
 int counter = 0;
 for (int i = 0; i
 for (int j = 0; j
 H[counter++] = kernel[i, j];
 Bitmap ret = new Bitmap(img);
 int norma = Max(Sum(H), 1);
 for (int i = 2; i
 {
 for (int j = 2; j
 {
 int[] V = new int[25];
 for (int k = 0; k
 V[k] = img.GetPixel(i — 1 + k / 5 — 1, j — 1 + k % 5 — 1).ToArgb();
 long mul = MulScalar(V, H);
 double d =(double)1 / (double)norma;
 double px = (d * mul);
 ret.SetPixel(i, j, Color.FromArgb((int)px));
 }
 bw.ReportProgress(100 * i / img.Width);
 if (bw.CancellationPending)
 return ret;
 }
 return ret;
 }
 private static int Sum(int[] arr)
 {
 int res = 0;
 foreach (int i in arr)
 res += i;
 return res;
 }
 private static int Max(int first, int second)
 {
 if (first > second)
 return first;
 else
 return second;
 }
 private static long MulScalar(int[] first, int[] second)
 {
 long res = 0;
 for (int i = 0; i
 res += (first[i] * second[i]);
 return res;
 }
 }
}
Kernel.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Kursach
{
 public interface IKernel
 {
 int[,] Kernel
 {
 get;
 }
 string Text
 {
 get;
 }
 }
}
Kernels.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Kursach
{
 class Gradient: IKernel
 {
 #region IKernel Members
 public int[,] Kernel
 {
 get
 {
 return new int[,]
 { { 0, -1, 0, 1, 0},
 {-1, -2, 0, 2, 1},
 {-1, -2, 0, 2, 1},
 {-1, -2, 0, 2, 1},
 {0, -1, 0, 1, 0} };
 }
 }
 public string Text
 {
 get { return «Градиентный»; }
 }
 #endregion
 }
 class Laplacian: IKernel
 {
 #region IKernel Members
 public int[,] Kernel
 {
 get
 {
 return new int[,]
 { { -1, -1, -1, -1, -1},
 {-1, -1, -1, -1, -1},
 {-1, -1, 24, -1, -1},
 {-1, -1, -1, -1, -1},
 {-1, -1, -1, -1, -1}}; ;
 }
 }
 public string Text
 {
 get { return «Лапласиана»; }
 }
 #endregion
 }
 class Smoothing: IKernel
 {
 #region IKernel Members
 public int[,] Kernel
 {
 get
 {
 return new int[,]
 { { 1, 1, 1, 1, 1},
 {1, 1, 1, 1, 1},
 {1, 1, 0, 1, 1},
 {1, 1, 1, 1, 1},
 {1, 1, 1, 1, 1}};
 }
 }
 public string Text
 {
 get { return «Smoothing»; }
 }
 #endregion
 }
 class Gaussian: IKernel
 {
 #region IKernel Members
 public int[,] Kernel
 {
 get
 {
 return new int[,]
 {{ 1, 2, 4, 2, 1},
 {2, 4, 8, 4, 2},
 {4, 8, 16, 8, 16},
 {2, 4, 8, 4, 2},
 {1, 2, 4, 2, 1}};
 }
 }
 public string Text
 {
 get { return «Гаусовый»; }
 }
 #endregion
 }
 class Unknown: IKernel
 {
 #region IKernel Members
 public int[,] Kernel
 {
 get
 {
 return new int[,]
 { { 0, 0, 0, 0, 0},
 {0, 0, 0, 0, 0},
 {0, 0, 0, 0, 0},
 {0, 0, 0, 0, 0},
 {0, 0, 0, 0, 0}};
 }
 }
 public string Text
 {
 get { return «Произвольный»; }
 }
 #endregion
 }
}
Program.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Kursach
{
 static class Program
 {
 ///
 /// The main entry point for the application.
 ///
 [STAThread]
 static void Main()
 {
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(newMainForm());
 }
 }
}


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Реклама в России
Реферат Ответственность за неоказание и ненадлежащее оказание медицинской помощи больному
Реферат Московский университет и другие образовательные учреждения МВД России. История и современность
Реферат Мелиоративное состояние орошаемых земель в Кыргызской Республике и пути его улучшения
Реферат Алмазова Е. С. Логопедическая работа по восстановлению голоса у детей
Реферат Понятие коррупционной преступности и ее виды
Реферат Средневековая философия 2
Реферат Бухгалтерские счета, их назначение и структура. Счета активные и пассивные. Активно-пассивные сч
Реферат Валеологический анализ факторов здоровья
Реферат Расчет и конструирование лифтов и комплектующего их оборудования
Реферат Волго-Вятский экономический район
Реферат Микроклимат животноводческих помещений
Реферат Охорона і раціональне використання поверхневих та підземних вод
Реферат Растительный и животный мир Липецкой области
Реферат Управление кредитными операциями коммерческого банка