- •Требования к оформлению
- •Лабораторная работа №1. Загрузку изображений. Построение гистограммы изображения.
- •Лабораторная работа №2. Логические операции с изображениями.
- •Лабораторная работа №3. Арифметические операции с изображениями.
- •Лабораторная работа №4. Геометрические преобразования изображений.
- •Лабораторная работа №5. Масочная фильтрация изображений.
Лабораторная работа №3. Арифметические операции с изображениями.
№ варианта |
Задание |
1 |
a) Одноместная (в преобразование участвует изображение и некоторое константное значение) операция + (сложение) с изображением (повышение яркости изображения)
Возможный вариант реализации:
c = 128; for(long y=0; y<newy; y++) { for(long x=0; x<newx; x++){ fX = x * xScale; SetPixelColor(x,y,GetPixelColor(x,y)+c); } }
b) Двухместная (в преобразование участвуют два изображения) операция + (сложение) с изображением.
Пример:
+ =
|
2 |
a) Одноместная (в преобразование участвует изображение и некоторое константное значение) операция – (вычитание) с изображением
Возможный вариант реализации:
c = 128; for(long y=0; y<newy; y++) { for(long x=0; x<newx; x++){ fX = x * xScale; SetPixelColor(x,y,GetPixelColor(x,y)-c); } }
b) Двухместная (в преобразование участвуют два изображения) операция - (вычитание) с изображением (выделение на изображении областей, которые имеют имеют белый цвет).
Пример:
- =
|
3 |
a) Одноместная (в преобразование участвует изображение и некоторое константное значение) операция * (умножение) с изображением (значительное повышение интенсивности изображения)
Возможный вариант реализации:
c = 128; for(long y=0; y<newy; y++) { for(long x=0; x<newx; x++){ fX = x * xScale; SetPixelColor(x,y,GetPixelColor(x,y)*c); } }
b) Двухместная (в преобразование участвуют два изображения) операция * (умножение) с изображением (выделение на изображении областей, которые имеют одинаковый цвет).
Пример:
И =
|
Лабораторная работа №4. Геометрические преобразования изображений.
№ варианта |
Задание |
1 |
a) Увеличение и уменьшение изображения с использованием метода определения неизвестных значений по ближайшему соседнему пикселу.
Возможный вариант реализации:
xScale = (float)head.biWidth / (float)newx; yScale = (float)head.biHeight / (float)newy;
for(long y=0; y<newy; y++) { info.nProgress = (long)(100*y/newy); fY = y * yScale; for(long x=0; x<newx; x++){ fX = x * xScale; SetPixelColor(x,y,GetPixelColor((long)fX,(long)fY)); } }
b) Увеличение и уменьшение изображения с использованием метода определение неизвестных значений с использованием линейной интерполяции.
|
2 |
a) Увеличение и уменьшение изображения с использованием метода определения неизвестных значений по ближайшему соседнему пикселу.
Возможный вариант реализации:
xScale = (float)head.biWidth / (float)newx; yScale = (float)head.biHeight / (float)newy;
for(long y=0; y<newy; y++) { info.nProgress = (long)(100*y/newy); fY = y * yScale; for(long x=0; x<newx; x++){ fX = x * xScale; SetPixelColor(x,y,GetPixelColor((long)fX,(long)fY)); } }
b) Увеличение и уменьшение изображения с использованием метода определение неизвестных значений с использованием кубической интерполяции. |
3 |
a) Зеркальное отражение изображения
Возможный вариант реализации:
for(y=0; y < head.biHeight; y++) { for(x=0; x <= wdt; x++) SetPixelIndex(x,y,GetPixelIndex(wdt-x,y)); }
b) Поворот изображения
Возможный вариант реализации: см. http://www.xdp.it/ CxImage::Rotate |