Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 22:09, контрольная работа
В данном задании рассматриваются одноместная и двухместная бинарная операция ИЛИ с изображением. Ее суть в том, чтобы увеличить яркость участков изображения, если она ниже константы.
В цветовой модели RGB для хранения значения интенсивности каждого цветового компонента выделяется один байт, т.е. интенсивность может принимать значения в диапазоне от 0(минимальная интенсивность) до 255 (28-1) (максимальная интенсивность). Цвет пикселя описывается структурой размером 3 (или 4) байта.
1. Задание №1.Написать программы, реализующие логические операции
с изображением:………………………………………………………………….3
1.1.Одноместная операция (в преобразование участвует изображение и некоторое константное значение) - операция ИЛИ с изображением.
1.2.Двухместная операция (в преобразование участвуют два изображения) - операция ИЛИ с изображением (выделение на изображении областей, которые имеют белый цвет).
2. Задание №2.Написать программы, реализующие арифметические операции с изображением:……………………………………………………….7
2.1.Одноместная (в преобразовании участвует изображение и некоторое константное значение) операция – (вычитание) с изображением.
2.2.Двухместная (в преобразовании участвуют два изображения) операция – (вычитание) с изображением (выделение на изображении областей, которые имеют белый цвет).
3. Задание №3.Написать программы, реализующие логические операции с изображением:……………………………………...……………………………11
3.1.Увеличение и уменьшение изображения с использованием метода определения неизвестных значений по ближайшему соседнему пикселю.
3.2.Увеличение и уменьшение изображения с использованием метода определения неизвестных значений с использованием кубической интерполяции.
4. Задание №4.Написать программу, реализующую масочную фильтрацию на основе заданных масок (двухмерных массивов):…………………………..18
4.1. Горизонтальный градиентный фильтр Превитта:
1 1 1
0 0 0
-1 -1 -1
4.2. Вертикальный градиентный фильтр Превитта:
-1 0 1
-1 0 1
-1 0 1
4.3. Горизонтальный градиентный фильтр Собеля:
1 2 1
0 0 0
-1 -2 -1
4.4. Вертикальный градиентный фильтр Собеля:
-1 0 1
-2 0 2
-1 0 1
5. Delphi 7………………………………………………………………………..25
областей, которые имеют одинаковый цвет)}
xb2:=xb2+(n+4)*map; yb:=30;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do
Canvas.Pixels[xb2+(j-1)*map+
and pic2[i,j]));;
{Двухместная операция
ИСКЛЮЧАЮЩЕЕ ИЛИ с
областей,
цвет которых не совпадает)}
xb2:=xb2+(n+4)*map; yb:=30;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do
Canvas.Pixels[xb2+(j-1)*map+
xor pic2[i,j]);
{ MyPixel(NotPixel(pic1[i,j]));}
{
(NotPixel(pic1[i,j])*pic2[i,j]
Задание №2.
{Одноместная операция+
сложение(ИЛИ) с изображением(
xb2:=xb2+(n+4)*map; yb2:=yb+(n+4)*map;
for i:=1 to n do begin
for j:=1 to n do begin
for k1:=1 to map do
for k2:=1 to map do
Canvas.Pixels[xb2+(j-1)*map+
end;
end;
{Двухместная операция ИЛИ с изображением(выделение на изображении
областей, которые имеют белый цвет)}
xb2:=xb2+(n+4)*map; yb:=30;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do
Canvas.Pixels[xb2+(j-1)*map+
or pic2[i,j]);
Задание №3.
Увеличение изображения с использованием метода определения неизвестных
значений по ближайшему СОСЕДНЕМУ ПИКСЕЛУ, увеличениеизображения в scale раз}
scale:=3;
xb2:=xb; yb2:=yb+2*(n+4)*map;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do begin
pic[i,j]:=pic1[i,(j-1) div scale+1];
Canvas.Pixels[xb2+(j-1)*map+
end;
{Увеличение изображения с использованием метода определения
неизвестных значений с использованием ЛИНЕЙНОЙ ИНТЕРПОЛЯЦИИ((PIX 1+ PIX 2)/2)
j=1...n; если(j=1, то (P1+P2)/2); если(j=n, то(Pn-1+Pn)/2);
если 1<j<n, то (j=n(Pj-1+Pj+1)/2)}
xb2:=xb2+(n+4)*map; yb2:=yb+2*(n+4)*map;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do begin
if (j-1) mod (n-1) = 0 then pic[i,j]:=(pic1[i,j]+pic1[i,j+
else pic[i,j]:=(pic1[i,j-1]+pic1[i,
Canvas.Pixels[xb2+(j-1)*map+
end;
{ scale:=2;
for i:=1 to n do
for j:=1 to n do
for k1:=1 to map do
for k2:=1 to map do
if Canvas.Pixels[xb+(j-1)*map+k2-
Canvas.Pixels[xb2+(j-1)*map+
else
Canvas.Pixels[xb2+(j-1)*map+
end;
end.