Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







ЛР №1. Представление изображений в системах технического зрения





ЛР №1. Представление изображений в системах технического зрения

Цель работы

Цель работы: изучение способов представления растровых изображений в технических системах и формирование навыков обработки изображений средствами языка Pascal.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.

Основные теоретические положения

Для работы с графическими изображениями ABC-Pascal содержит расширение стандартной библиотеки Graph — модуль GraphABC. Данный модуль содержит ряд процедур и функций, позволяющих считывать растровое изображение из графического файла с внешнего накопителя, отображать его на экране, определят размеры загруженного изображения, а также обеспечивать доступ к отдельным его элементам (на чтение и запись).

Работа с рисунками в модуле GraphABC производится с помощью описателей (целых чисел, однозначно определяющих рисунок). Каждый рисунок, хранящийся во время работы программы в оперативной памяти, имеет описатель (дескриптор), представляющий собой целое число. Это число возвращается функцией загрузки рисунка из файла LoadPicture, после чего передается в качестве первого параметра во все остальные процедуры и функции работы с рисунками.

function LoadPicture(fname: string): integer;

n:=LoadPicture(fname) – загружает рисунок из файла с именем fname в оперативную память и возвращает описатель рисунка в целую переменную n; если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате.bmp,.jpg или.gif.

procedure SavePicture(n: integer; fname: string);

Сохраняет рисунок с описателем n в файл с именем fname. Рисунки можно сохранять в формате.bmp,.jpg или.gif.

procedure DrawPicture(n,x,y: integer);

Выводит рисунок с описателем n в позицию (x,y) графического окна.

procedure DrawPicture(n,x,y,w,h: integer);

Выводит рисунок с описателем n в позицию (x,y) графического окна, масштабируя его размеры к ширине w и высоте h. Если w<0, то рисунок зеркально отражается относительно вертикальной прямой, проходящей через x, если же h<0, то рисунок зеркально отражается относительно горизонтальной прямой, проходящей через y.

procedure DrawPicture(n: integer; x,y: integer; r: Rect);

Выводит часть рисунка с описателем n, заключенную в прямоугольнике r, в позицию (x,y) графического окна.

procedure DrawPicture(n: integer; x,y,w,h: integer; r: Rect);

Выводит часть рисунка с описателем n, заключенную в прямоугольнике r, в позицию (x,y) графического окна, масштабируя его размеры к ширине w и высоте h. Если w<0, то рисунок зеркально отражается относительно вертикальной прямой, проходящей через x, если же h<0, то рисунок зеркально отражается относительно горизонтальной прямой, проходящей через y.

procedure CopyRect(n: integer; dest: Rect; n1: integer; src: Rect);

Копирует часть рисунка с описателем n1, заключенную в прямоугольнике src, в прямоугольник dest рисунка с описателем n.

procedure DestroyPicture(n: integer);

Удаляет рисунок с описателем n из оперативной памяти, описатель рисунка при этом становится недействительным.

procedure SetPictureSize(n,w,h: integer);

Устанавливает размер рисунка с описателем n равным w на h пикселей.

function PictureWidth(n: integer): integer;

Возвращает ширину рисунка с описателем n.

function PictureHeight(n: integer): integer;

Возвращает высоту рисунка с описателем n.

Для доступа к отдельным пикселям используются следующие подпрограммы.

procedure SetPixel(x,y,color: integer);

Закрашивает один пиксел с координатами (x,y) цветом color.

function GetPixel(x,y): integer;

Возвращает текущее значение цвета для пиксела с координатами (x,y).

Модуль GraphABC содержит константы и функции для работы с цветами. Тип ColorType, описывающий цвет, определен следующим образом:

type ColorType=integer;

Стандартные цвета задаются символическими константами:

clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый clCream – кремовый   clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – темно-серый clLime – ярко-зеленый clMoneyGreen – цвет зеленых денег clLtGray – светло-серый clDkGray – темно-серый clMedGray – серый clSilver – серебряный

Для работы с цветами используются следующие функции.

function RGB(r,g,b: integer): ColorType;

Возвращает целое значение, являющееся кодом цвета, который содержит красную, зеленую и синюю составляющие с интенсивностями r, g и b соответственно (r, g и b – целые в диапазоне от 0 до 255, причем, 0 соответствует минимальной интенсивности, 255 – максимальной).

function GetRed(color: ColorType): integer;

Выделяет красную составляющую из цвета color (целое в диапазоне от 0 до 255);

function GetGreen(color: ColorType): integer;

Выделяет зеленую составляющую из цвета color (целое в диапазоне от 0 до 255);

function GetBlue(color: ColorType): integer;

Выделяет синюю составляющую из цвета color (целое в диапазоне от 0 до 255).

 

Задание на работу

1. Изучить основные теоретические положения лабораторной работы.

2. Разработать программу, которая

— считывает изображение из графического файла;

— отображает загруженное в память изображение в окне программы;

— выполняет его поэлементное копирование со сдвигом по горизонтали на ширину изображения;

— в процессе копирования выполняет некоторое преобразование яркости/цветового тона пикселей (например, изменяет яркость зелёной компоненты на +10 уровней); вид преобразования придумать самостоятельно.

3. Оформить отчёт, содержащий текст программы и результаты контрольного прогона («скриншот»). Дать ответы на контрольные вопросы.

1.4. Контрольные вопросы

1. Каковы основные функции для работы с графическими файлами?

2. Каковы основные процедуры и функции для доступа к отдельным пикселям?

3. Как кодируется цвет в полноцветных растровых изображениях и с помощью каких функций можно выделить отдельные цветовые компоненты из общего цвета пикселя?

 

 

2. ЛР №2. МОДЕЛИРОВАНИЕ АДДИТИВНЫХ И ИМПУЛЬСНЫХ
ШУМОВ НА ИЗОБРАЖЕНИИ

Цель и задачи работы

Исследовать проявление шумов различного вида на изображениях. Разработать программу, вносящую в изображения шумы с заданными статистическими характеристиками.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.

Begin

color:= Random(50);

color:= color + im1[y,x] - 25;

 

if color > 255 then im1[y,x]:= 255

Else

if color < 0 then im1[y,x]:= 0

else im1[y,x]:= color;

end;

 

В качестве еще одного варианта шума можно указать так называемый импульсный шум. Его можно рассматривать как поток кратковременных помех, искажающих лишь некоторые пиксели исходного изображения. Вероятность возникновения импульсной помехи определяет интенсивность воздействия импульсного шума. Пример программной реализации может иметь вид:

{ ***************************** }

{ ИМПУЛЬСНЫЙ ШУМ }

{ ***************************** }

Randomize;

 

for y:=0 to LEN-1 do

for x:=0 to LEN-1 do

Begin

if Random(1000) > 950 then

Begin

color:= Random(200);

color:= color - 100 + im1[y,x];

 

if color > 255 then im1[y,x]:= 255

Else

if color < 0 then im1[y,x]:= 0

else im1[y,x]:= color;

end;

end;

Порядок выполнения работы

На основе программы, разработанной в лабораторной работе №1, реализовать формирование модели изображения, подвергшейся воздействию:

а) аддитивного белого шума;

б) импульсного шума.

Предусмотреть возможность ввода с клавиатуры числовых характеристик шума: среднеквадратичного отклонения для аддитивного белого шума и вероятности искажения пикселя импульсной помехой для импульсного шума.

2.4. Контрольные вопросы

1. Как проявляется на изображении аддитивный белый шум?

2. Как изменяется вид изображения при увеличении/уменьшении величины среднеквадратичного отклонения шума?

3. Как проявляется на изображении импульсный шум?

 

Цель и задачи работы

Закрепить на практике сведения о методах выравнивания гистограмм яркости изображений. Разработать программу, реализующую вычисление гистограммы для анализируемого изображения и один из методов изменения глобальной плотности распределения вероятностей появления пикселей с заданным уровнем яркости.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.

Порядок выполнения работы

На основе программы, созданной в лабораторной работе №1, разработать программу, осуществляющую гистограммное выравнивание загруженного из файла изображения.

Предусмотреть возможность одновременного отображения исходного изображения и изображения с выровненной гистограммой, гистограммы исходного и преобразованного изображений, а также функции преобразования T, построенной для заданного изображения.

3.4. Контрольные вопросы

1. Понятие гистограммы уровней яркости изображения.

2. Формирование гистограмм по изображению.

3. Визуальные проявления неравномерных гистограмм на изображениях.

5. Назначение методов выравнивания гистограмм.

6. Содержание методов выравнивания гистограмм.

 

 

4. ЛР №4. ИССЛЕДОВАНИЕ ПРОСТЕЙШИХ ЛИНЕЙНЫХ И
НЕЛИНЕЙНЫХ ФИЛЬТРОВ в задачах обработки сенсорных сигналов

Цель и задачи работы

Закрепить на практике методы двумерной фильтрации изображений. Исследовать влияние простейших линейных и нелинейных фильтров на изображения, искажённые шумами различных типов. Разработать программу, реализующую усредняющую линейную и медианную фильтрацию заданного изображения.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.

Begin

im2[i,0]:= im1[i,0];

im2[i,LEN-1]:= im1[i,LEN-1];

im2[0,i]:= im1[0,i];

im2[LEN-1,i]:= im1[LEN-1,i];

end;

 

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

1) апертура фильтра построчно движется по изображению; для каждого ее положения рассматривается множество пикселей, оказывающихся внутри окна фильтра;

2) это множество сортируется по возрастанию (убыванию) яркости;

3) средний по порядку элемент отсортированного множества рассматривается как выход фильтра.

В качестве возможного примера программной реализации можно привести:

 

Var

med: array [0..8] of integer;

...

 

{ ***************************** }

{ МЕДИАННАЯ ФИЛЬТРАЦИЯ 3x3 }

{ ***************************** }

for y:=1 to LEN-2 do

for x:=1 to LEN-2 do

Begin

med[0]:= im1[y-1,x-1]; med[1]:= im1[y-1,x+0];

med[2]:= im1[y-1,x+1]; med[3]:= im1[y+0,x-1];

med[4]:= im1[y+0,x+0]; med[5]:= im1[y+0,x+1];

med[6]:= im1[y+1,x-1]; med[7]:= im1[y+1,x+0];

med[8]:= im1[y+1,x+1];

 

{Сортировка массива}

for i:=0 to 5 do

for j:=i+1 to 8 do

if med[i]>med[j] then

Begin

color:= med[i]; med[i]:= med[j]; med[j]:= color;

end;

im2[y,x]:= med[5]; {Средний элемент упорядоченного массива}

end;

 

{Копирование граничных строк/столбцов}

for i:=0 to LEN-1 do

Begin

im2[i,0]:= im1[i,0]; im2[i,LEN-1]:= im1[i,LEN-1];

im2[0,i]:= im1[0,i]; im2[LEN-1,i]:= im1[LEN-1,i];

end;

 

Порядок выполнения работы

На основе программы, созданной в лабораторной работе №2, разработать программу, выполняющую фильтрацию изображения линейным усредняющим и медианным фильтром с прямоугольной апертурой.

Предусмотреть возможность изменения размеров апертуры фильтра.

Исследовать влияние фильтров с апертурами различных размеров на исходное изображение, и изображение, подвергшееся воздействию аддитивного белого и импульсного шума.

 

4.4. Контрольные вопросы

1. Объясните основное отличие линейной фильтрации от нелинейной?

2. Как влияет увеличение апертуры линейного фильтра на результирующее изображение?

3. Какой из видов фильтров – линейный усредняющий или медианный, – оказывается более эффективным при обработке импульсного шума?

 

Цель и задачи работы

Закрепить на практике сведения о способах выделения контуров объектов на монохромных изображениях. Разработать программу, реализующую двумерное пространственное дифференцирование сигнала фильтрами Роббертса и Собела.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.

Порядок выполнения работы

На основе программы, созданной в лабораторной работе №1, разработать программу, осуществляющую выделение контуров изображения. Предусмотреть возможность обработки различными градиентными фильтрами.

5.4. Контрольные вопросы

1. Назначение градиентных методов трассировки контуров.

2. Принцип работы фильтра Роббертса.

3. Отличие фильтра Собела от фильтра Роббертса.

4. Сравнение нелинейных и линейных высокочастотных фильтров.

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

 

1. Воротников С.А. Информационные устройства робототехнических систем / С.А. Воротников. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2005. – 384 с.

2. Фрайден Дж. Современные датчики / Дж. Фрайден. – М.: Техносфера, 2005. – 592 с.

3. Фу К., Гонсалес Р., Ли К. Робототехника. /Пер. с англ. М.: Мир, 1989. – 624 с.

4. Павлидис Т. Алгоритмы машинной графики и обработки изображений. – М.: Радио и связь, 1986. – 400 с.

 

ЛР №1. Представление изображений в системах технического зрения

Цель работы

Цель работы: изучение способов представления растровых изображений в технических системах и формирование навыков обработки изображений средствами языка Pascal.

Требования к техническим и программным средствам: персональный компьютер PC/AT; операционная система MS Windows; интегрированная среда разработки ABC-Pascal.







Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.