
2 Специальный раздел
2.1 Разработка структурной схемы программы
Исходя из технического задания, разработанное программное средство содержит следующие модули:
- главный модуль;
модуль ввода исходных данных;
модуль удаления точечных шумов на изображении;
модуль вывода исправленного изображения;
модуль сохранения исправленного изображения.
Для ввода исходных данных создана отдельная панель на форме. Исходные данные анализируются, производится обработка изображения. Исправленное изображение в дальнейшем можно сохранить в графический файл. Исходя из этого описания, построена структурная схема программы, представленная на листе 19.
Главный модуль предназначен для реализации интерфейса пользователя, в котором осуществляется диалог пользователя с программой, и вызова зависимых модулей посредством меню и управляющих кнопок.
В модуле ввода исходных данных происходит считывание исходного испорченного изображения, а также ввод и считывание данных, необходимых для фильтрации изображения.
В модуле удаления точечных шумов на изображении происходит фильтрация исходного изображения посредством удаления шумов.
В модуле вывода исправленного изображения происходит вывод изображения, очищенного от шумов, полученного в процессе фильтрации.
В модуле сохранения исправленного изображения происходит сохранение его в графический файл выбранного формата.
2.2 Разработка алгоритмов модулей
Модуль ввода исходных данных реализован с проверкой корректности ввода. Схема алгоритма модуля представлена на листе 21. Программа воспринимает в качестве исходных данных изображение, подлежащее обработке, пороговые значения по трём каналам RGB палитры (pr, pg, pb для красного, зеленого и синего каналов соответственно), размер окна (OW х OH) и координаты области выделения (xx1, xx2, yy1, yy2), получаемые в результате захвата.
Проверка корректности ввода реализована при задании пороговых коэффициентов. Т.к. существует 256 градаций цвета (значения от 0 до 255), то если задать значение больше 255 на экран выводится сообщение о некорректности ввода пороговых значений.
В блоке 1 происходит считывание исходного изображения, которое испорчено некоторым точечным шумом.
В блоке 2 происходит ввод размера окна фильтра (его ширина и высота). Данное окно может быть следующих размеров: 3 х 3, 5 х 5, 7 х 7 и 9 х 9, которые выбираются из списка непосредственно в самой программе до начала фильтрации изображения.
В блоке 3 происходит считывание координат выделенной области изображения в момент захвата (левый верхний и правый нижний углы области) Эти координаты нужны для того чтобы, знать какую часть изображения обрабатывать фильтром.
В блоке 4 происходит ввод пороговых значений по трем каналам RGB палитры.
В блоке 5 происходит проверка на корректность ввода пороговых значений и если хотя бы одно из них превышает 255, то на экран выводится сообщение о некорректности ввода (блок 6), т.к. каждая компонента RGB палитры содержит в себе 8 бит информации, т.е. максимально допустимое значение 255.
Алгоритм удаления точечных шумов на изображении представлен на листах 23 - 24. В начале происходит захват всего изображения, либо конкретной области изображения (которую нужно обработать с помощью фильтра). Левая и правая координаты области по Х – хх1 и хх2 соответственно. Верхняя и нижняя координаты области по Y – yy1 и yy2 соответственно. Далее задаются пороговые значения по трем каналам RGB палитры: красная, зеленая и синяя.
Фильтр, реализуемый с помощью данного алгоритма, представляет собой скользящее по полю изображения окно размером OW х OH, которое смещается на 1 пиксель при проходе каждой итерации цикла. Размер окна выбирается из списка в самом начале и может быть равным следующим значениям: 3х3, 5х5, 7х7, 9х9. При каждом перемещении окна происходит проверка центрального пикселя данного окна на аномальность, т.е. является ли этот пиксель точечной помехой или нет. Для этого производится сравнение центрального пикселя окна со средним арифметическим окрестности данного пикселя, причем эти пиксели должны находится в пределах окна. Сравнение происходит по трем компонентам RGB палитры в отдельности. Если же в результате сравнения получено отклонение превышающее пороговое значение, то значит данный пиксель является точечной помехой и происходит его замена значением цвета фона. А цвет фона в данном случае является средним арифметическим цветов окрестности данного аномального пикселя.
В блоке 1 происходит ввод исходных данных, которые были считаны в модуле ввода исходных данных.
Блоки 2 и 3 реализуют цикл прохода окна фильтра по выделенной области изображения от левой верхней границы до правой нижней со смещением на один пиксель.
Блоки 4 и 5 реализуют цикл обработки изображения фильтром. Данный цикл проходит от левой верхней границы окна фильтра до правой нижней в текущий момент времени.
В блоке 6 происходит проверка, лежит ли пиксель окна в окрестности центрального пикселя. Т.е. данный пиксель не должен являться центральным.
В блоке 7 происходит суммирование компонентов цветов пикселей окрестности центрального пикселя по каждому из трех каналов RGB палитры в отдельности.
В блоке 8 происходит вычисление количества пикселей окрестности центрального пикселя окна фильтра.
В блоке 9 происходит вычисление среднего арифметического компонент цветов пикселей окрестности центрального пикселя, т.е. происходит деление конечного результата, полученного в блоке 7, на конечный результат блока 8.
В блоке 10 происходит определение компонент центрального пикселя окна фильтра.
В блоке 11 происходит условие, является ли центральный пиксель окна фильтра точечной помехой. Т.е. разность центрального пикселя и среднего арифметического его окрестности должна быть больше пороговых значений. Данное условие выполняется по трем каналам RGB палитры.
В блоке 12 происходит замена центрального пикселя окна фильтра значением среднего арифметического его окрестности, т.е. цветом фона. Данная замена происходит в случае успешного выполнения условия, реализованного в блоке 11.
В блоке 12 происходит вывод измененного пикселя на экран вместо старого пикселя.
Таким образом при проходе всех итераций цикла исходное изображение очищается от шумов.