diff --git a/lpo-projekt-v2/src/core/histogram.cpp b/lpo-projekt-v2/src/core/histogram.cpp index 31fc8ce..90bda72 100644 --- a/lpo-projekt-v2/src/core/histogram.cpp +++ b/lpo-projekt-v2/src/core/histogram.cpp @@ -24,63 +24,61 @@ Histogram::~Histogram() void Histogram::generate(QImage* image) { - qDebug() << Q_FUNC_INFO << "Histogram!"; - qDebug() << Q_FUNC_INFO << image->height(); - qDebug() << Q_FUNC_INFO << image->width(); - for ( int row = 0; row < image->height(); ++row ) { - for ( int col = 0; col < image->width(); ++col ) { - QColor clrCurrent( image->pixel( row, col ) ); - if (R->contains(clrCurrent.red())) { - R->insert(clrCurrent.red(), R->value(clrCurrent.red()) + 1); - } else { - R->insert(clrCurrent.red(), 1); - } - if (G->contains(clrCurrent.green())) { - G->insert(clrCurrent.green(), G->value(clrCurrent.green()) + 1); - } else { - G->insert(clrCurrent.green(), 1); - } - if (B->contains(clrCurrent.blue())) { - B->insert(clrCurrent.blue(), B->value(clrCurrent.blue()) + 1); - } else { - B->insert(clrCurrent.blue(), 1); - } - if (L->contains(clrCurrent.alpha())) { - L->insert(clrCurrent.alpha(), L->value(clrCurrent.alpha()) + 1); - } else { - L->insert(clrCurrent.alpha(), 1); - } + int width = image->width(); + int height = image->height(); + //int i = 0; + + for (int x = 0; xpixel(x, y); + + int r = qRed(pixel); + int g = qGreen(pixel); + int b = qBlue(pixel); + int l = qGray(pixel); + R->insert(r, R->value(r) + 1); + G->insert(g, G->value(g) + 1); + B->insert(b, B->value(b) + 1); + L->insert(l, L->value(l) + 1); + } } - } + + } /** Returns the maximal value of the histogram in the given channel */ int Histogram::maximumValue(Channel selectedChannel = RGB) { - qDebug() << Q_FUNC_INFO << "Max value!"; - qDebug() << Q_FUNC_INFO << selectedChannel; - int max = 1; + int max = 0; - if (selectedChannel == RGB) { - qDebug() << Q_FUNC_INFO << "RGB"; - max = maximumValue(RChannel); - int maxG = maximumValue(GChannel); - if (maxG > max) { - max = maxG; - } - int maxB = maximumValue(BChannel); - if (maxB > max) { - max = maxB; - } - } else { - qDebug() << Q_FUNC_INFO << "selectedChannel"; - foreach(int value, get(selectedChannel)->values()) { - if (value > max) { - max = value; - } - } - } - return max; + if (selectedChannel == RGB) { + if (maximumValue(RChannel) > max) { + max = maximumValue(RChannel); + } + if (maximumValue(GChannel) > max) { + max = maximumValue(GChannel); + } + if (maximumValue(BChannel) > max) { + max = maximumValue(BChannel); + } + } + else + { + QHash* hash = get(selectedChannel); + QHash::iterator i = hash->begin(); + + for (i = hash->begin(); i != hash->end(); ++i) + { + if (i.value() > max) + { + max = i.value(); + } + } + + } + return max; } diff --git a/lpo-projekt-v2/src/core/pnm.cpp b/lpo-projekt-v2/src/core/pnm.cpp index 7c3f724..5b1f138 100644 --- a/lpo-projekt-v2/src/core/pnm.cpp +++ b/lpo-projekt-v2/src/core/pnm.cpp @@ -44,7 +44,7 @@ PNM::PNM(int width, int height, QImage::Format format) : { case QImage::Format_Mono: break; - case QImage::Format_Grayscale8: + case QImage::Format_Indexed8: this->setColorCount(256); for (int i = 0; i < 256; i++) diff --git a/lpo-projekt-v2/src/core/tools.cpp b/lpo-projekt-v2/src/core/tools.cpp index 82d624e..b45d5bb 100644 --- a/lpo-projekt-v2/src/core/tools.cpp +++ b/lpo-projekt-v2/src/core/tools.cpp @@ -21,7 +21,7 @@ void Tools::negativeImage() ImageViewer* iv = getViewer(); // Get the ImageViewer which holds the image. if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -45,7 +45,7 @@ void Tools::correctBrightnessContrastGamma() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -75,7 +75,7 @@ void Tools::histogramEqualize() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -87,7 +87,7 @@ void Tools::histogramStretch() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -113,7 +113,7 @@ void Tools::blurGauss() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -132,7 +132,7 @@ void Tools::blurLinear() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -152,7 +152,7 @@ void Tools::blurUniform() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -170,7 +170,7 @@ void Tools::binGradient() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -182,7 +182,7 @@ void Tools::binIterBimodal() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -194,7 +194,7 @@ void Tools::binManual() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -216,7 +216,7 @@ void Tools::binNiblack() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -234,7 +234,7 @@ void Tools::binOtsu() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -252,7 +252,7 @@ void Tools::noiseMedian() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -269,7 +269,7 @@ void Tools::noiseBilateral() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -294,7 +294,7 @@ void Tools::morphDilate() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -316,7 +316,7 @@ void Tools::morphErode() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -338,7 +338,7 @@ void Tools::morphOpen() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -360,7 +360,7 @@ void Tools::morphClose() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -387,7 +387,7 @@ void Tools::edgeSobel() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -399,7 +399,7 @@ void Tools::edgePrewitt() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -411,7 +411,7 @@ void Tools::edgeRoberts() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -424,7 +424,7 @@ void Tools::edgeLaplacian() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -444,7 +444,7 @@ void Tools::edgeZero() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -470,7 +470,7 @@ void Tools::mapHeight() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -483,7 +483,7 @@ void Tools::mapHorizon() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -524,7 +524,7 @@ void Tools::edgeCanny() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -549,7 +549,7 @@ void Tools::houghTransform() ImageViewer* iv = getViewer(); if (!SupportedImageFormat(iv, QList() << QImage::Format_Mono - << QImage::Format_Grayscale8 + << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -590,7 +590,7 @@ void Tools::cornerHarris() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return; @@ -633,7 +633,7 @@ void Tools::segmentation() { ImageViewer* iv = getViewer(); - if (!SupportedImageFormat(iv, QList() << QImage::Format_Grayscale8 + if (!SupportedImageFormat(iv, QList() << QImage::Format_Indexed8 << QImage::Format_RGB32)) return;