Реализация фильтров
This commit is contained in:
parent
24e2cbb354
commit
3fe2a87e35
4 changed files with 109 additions and 58 deletions
57
main.cpp
57
main.cpp
|
@ -2,11 +2,8 @@
|
|||
#include "bmpimage.h"
|
||||
#include "psf.h"
|
||||
|
||||
const std::string FILENAME = "../elef.bmp";
|
||||
const std::string FILENAME_OUT = "../elef_out.bmp";
|
||||
auto font = readPSF("../fonts/ruscii_8x16_2.psf");
|
||||
|
||||
//
|
||||
void lab01() {
|
||||
auto og_image = readBMPImage("../elef.bmp");
|
||||
auto pixels1 = og_image.pixels_copy();
|
||||
|
@ -31,7 +28,6 @@ void lab01() {
|
|||
orig_text, 0, 0).save("../lab01/elef1.bmp");
|
||||
}
|
||||
|
||||
//
|
||||
void lab02_01() {
|
||||
auto img = readBMPImage("../tea.bmp");
|
||||
auto text1024 = textImg(u"1024", &font, 3);
|
||||
|
@ -63,7 +59,6 @@ void lab02_01() {
|
|||
// newImg2->save("../lab02/tea_upscale.bmp");
|
||||
}
|
||||
|
||||
//
|
||||
void lab02_02() {
|
||||
auto img = readBMPImage("../tea.bmp");
|
||||
auto ogText = textImg(u"Оригинал", &font, 3);
|
||||
|
@ -103,7 +98,6 @@ void lab02_02() {
|
|||
gsImg64).appendRight(gsImg32).save("../lab02/tea_grayscale.bmp");
|
||||
}
|
||||
|
||||
//
|
||||
void lab02_03() {
|
||||
auto img = readBMPImage("../tea.bmp");
|
||||
auto text = textImg(u"Оригинал", &font, 3);
|
||||
|
@ -134,40 +128,39 @@ void lab02_03() {
|
|||
}
|
||||
|
||||
void lab03() {
|
||||
auto img = readBMPImage("../tea.bmp");
|
||||
auto img = readBMPImage("../bike.bmp");
|
||||
auto imgGS = grayscale(img);
|
||||
int avrg_mask[9] = {1, 1, 1, 1, 1, 1, 1, 1, 1};
|
||||
int previtt_mask1[9] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
|
||||
int previtt_mask2[9] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};
|
||||
int sobel_mask1[9] = {-1, 0, 1, -2, 0, 2, -1, 0, 1};
|
||||
int sobel_mask2[9] = {-1, -2, -1, 0, 0, 0, 1, 2, 1};
|
||||
|
||||
auto avrg_text = textImg(u"Осреднение", &font, 3);
|
||||
auto previtt_text = textImg(u"Фильтр Превитта", &font, 3);
|
||||
auto median_text = textImg(u"Медиана", &font, 3);
|
||||
auto prewitt_text = textImg(u"Фильтр Превитта", &font, 3);
|
||||
auto sobel_text = textImg(u"Фильтр Собеля", &font, 3);
|
||||
auto text = textImg(u"Оригинал", &font, 3);
|
||||
auto avrg_image = filter(imgGS, avrg_mask).overlay(avrg_text, 0, 0);
|
||||
auto previtt_image1 = filter(imgGS, previtt_mask1, 1);//.overlay(previtt_text, 0, 0);
|
||||
auto previtt_image2 = filter(imgGS, previtt_mask2, 1);//.overlay(previtt_text, 0, 0);
|
||||
previtt_image1.save("../lab03/previtt1.bmp");
|
||||
previtt_image2.save("../lab03/previtt2.bmp");
|
||||
PixelArray previttPixels(previtt_image1.width(), previtt_image1.height());
|
||||
for (int y = 0; y < previtt_image1.height(); ++y) {
|
||||
for (int x = 0; x < previtt_image1.width(); ++x) {
|
||||
previttPixels(y, x) = previtt_image1.pixels()(y, x) + previtt_image2.pixels()(y, x);
|
||||
|
||||
auto avrg_image = imgGS.applyFilter(averageFilter).overlay(avrg_text, 0, 0);
|
||||
auto median_image = imgGS.applyFilter(medianFilter).overlay(median_text, 0, 0);
|
||||
auto prewitt_dx_image = imgGS.applyFilter(prewittDXFilter);
|
||||
auto prewitt_dy_image = imgGS.applyFilter(prewittDYFilter);
|
||||
prewitt_dx_image.save("../lab03/prewitt1.bmp");
|
||||
prewitt_dy_image.save("../lab03/prewitt2.bmp");
|
||||
PixelArray prewittPixels(prewitt_dx_image.width(), prewitt_dy_image.height());
|
||||
for (int y = 0; y < prewitt_dx_image.height(); ++y) {
|
||||
for (int x = 0; x < prewitt_dx_image.width(); ++x) {
|
||||
prewittPixels(y, x) = prewitt_dx_image.pixels()(y, x) + prewitt_dy_image.pixels()(y, x);
|
||||
}
|
||||
}
|
||||
auto previtt_image = BMPImage(previttPixels).overlay(previtt_text, 0, 0);
|
||||
auto sobel_image1 = filter(imgGS, sobel_mask1, 1).overlay(sobel_text, 0, 0);
|
||||
auto sobel_image2 = filter(imgGS, sobel_mask2, 1).overlay(sobel_text, 0, 0);
|
||||
PixelArray sobelPixels(sobel_image1.width(), sobel_image2.height());
|
||||
for (int y = 0; y < sobel_image1.height(); ++y) {
|
||||
for (int x = 0; x < sobel_image1.width(); ++x) {
|
||||
previttPixels(y, x) = sobel_image1.pixels()(y, x) + sobel_image2.pixels()(y, x);
|
||||
auto prewitt_image = BMPImage(prewittPixels).overlay(prewitt_text, 0, 0);
|
||||
auto sobel_dx_image = imgGS.applyFilter(sobelDXFilter).overlay(sobel_text, 0, 0);
|
||||
auto sobel_dy_image2 = imgGS.applyFilter(sobelDYFilter).overlay(sobel_text, 0, 0);
|
||||
PixelArray sobelPixels(sobel_dx_image.width(), sobel_dx_image.height());
|
||||
for (int y = 0; y < sobel_dx_image.height(); ++y) {
|
||||
for (int x = 0; x < sobel_dx_image.width(); ++x) {
|
||||
sobelPixels(y, x) = sobel_dx_image.pixels()(y, x) + sobel_dy_image2.pixels()(y, x);
|
||||
}
|
||||
}
|
||||
auto sobel_image = BMPImage(previttPixels).overlay(sobel_text, 0, 0);
|
||||
imgGS.overlay(text, 0, 0).appendRight(avrg_image).save("../lab03/avrg_filter.bmp");
|
||||
imgGS.overlay(text, 0, 0).appendRight(previtt_image).save("../lab03/previtt_filter.bmp");
|
||||
auto sobel_image = BMPImage(sobelPixels).overlay(sobel_text, 0, 0);
|
||||
imgGS.overlay(text, 0, 0).appendRight(avrg_image).appendRight(median_image).save("../lab03/avrg_median_filter.bmp");
|
||||
imgGS.overlay(text, 0, 0).appendRight(prewitt_image).save("../lab03/prewitt_filter.bmp");
|
||||
imgGS.overlay(text, 0, 0).appendRight(sobel_image).save("../lab03/sobel_filter.bmp");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue