From 41f0bcd76c793cba87c76713c74f71722404bd35 Mon Sep 17 00:00:00 2001 From: Patrycjusz Mania Date: Sat, 22 May 2021 12:15:58 +0200 Subject: [PATCH] zadanie-7 --- src/core/transformations/morph_dilate.cpp | 14 +++-- src/core/transformations/morph_erode.cpp | 13 +++- src/core/transformations/morph_openclose.cpp | 10 ++- .../morphological_operator.cpp | 62 ++++++++++++++++--- 4 files changed, 83 insertions(+), 16 deletions(-) diff --git a/src/core/transformations/morph_dilate.cpp b/src/core/transformations/morph_dilate.cpp index dba33f2..f1441e1 100644 --- a/src/core/transformations/morph_dilate.cpp +++ b/src/core/transformations/morph_dilate.cpp @@ -13,8 +13,14 @@ MorphDilate::MorphDilate(PNM* img, ImageViewer* iv) : const int MorphDilate::morph(math::matrix window, math::matrix se) { float min = PIXEL_VAL_MAX+1; - - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; - - return 0; + for (unsigned int i=0;i window[i][j]) { + min = window[i][j]; + } + } + } + } + return window.min(); } diff --git a/src/core/transformations/morph_erode.cpp b/src/core/transformations/morph_erode.cpp index 0946757..2409c4a 100644 --- a/src/core/transformations/morph_erode.cpp +++ b/src/core/transformations/morph_erode.cpp @@ -14,7 +14,14 @@ const int MorphErode::morph(math::matrix window, math::matrix se) { float max=0.0; - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; - - return 0; + for (unsigned int i=0;i MorphologicalOperator::seSquare(int size) { math::matrix ret(size, size); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + for (int x=0;x MorphologicalOperator::seCross(int size) { math::matrix ret(size, size); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + for (int x=0;x MorphologicalOperator::seXCross(int size) { - math::matrix ret(size, size); + math::matrix ret(size, size, false); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + int x = 0, y = 0; + for (int i=0;i MorphologicalOperator::seVLine(int size) { math::matrix ret(size, size); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + for (int x=0;x MorphologicalOperator::seHLine(int size) { math::matrix ret(size, size); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + for (int x=0;xwidth(), image->height(), QImage::Format_RGB32); - qDebug() << Q_FUNC_INFO << "Not implemented yet!"; + for (int x=0;xwidth();++x) { + for (int y=0;yheight();++y) { + math::matrix windowR = getWindow(x, y, size, RChannel, RepeatEdge); + int newR = morph(windowR, getSE(size, shape)); + math::matrix windowG = getWindow(x, y, size, GChannel, RepeatEdge); + int newG = morph(windowG, getSE(size, shape)); + math::matrix windowB = getWindow(x, y, size, BChannel, RepeatEdge); + int newB = morph(windowB, getSE(size, shape)); + + newImage->setPixel(x,y, QColor(newR, newG, newB).rgb()); + } + } return newImage; }