[TASK] Move intensity calculation to seperate method, increase precision using qRound.
This commit is contained in:
		
							parent
							
								
									c2421582b5
								
							
						
					
					
						commit
						3fe80df7f9
					
				| @ -73,6 +73,10 @@ void ImageViewer::initializeImage() { | |||||||
|   analyzeImage(); |   analyzeImage(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int ImageViewer::calcIntensity(int r, int g, int b) { | ||||||
|  |   return (int) qRound(0.299*r + 0.587*g + 0.114*b); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * In case it is needed, convert the loaded image into grayscale. |  * In case it is needed, convert the loaded image into grayscale. | ||||||
|  * @brief ImageViewer::convertToMonochrome |  * @brief ImageViewer::convertToMonochrome | ||||||
| @ -86,7 +90,7 @@ void ImageViewer::convertToMonochrome() { | |||||||
|         int r,g,b; |         int r,g,b; | ||||||
|         QColor color = QColor::fromRgb(image->pixel(x, y)); |         QColor color = QColor::fromRgb(image->pixel(x, y)); | ||||||
|         color.getRgb(&r,&g,&b); |         color.getRgb(&r,&g,&b); | ||||||
|         int intensity = (int)(0.299*r+0.587*g+0.114*b); |         int intensity = calcIntensity(r, g, b); | ||||||
|         color = QColor::fromRgb(intensity, intensity, intensity); |         color = QColor::fromRgb(intensity, intensity, intensity); | ||||||
|         image->setPixel(x, y, color.rgba()); |         image->setPixel(x, y, color.rgba()); | ||||||
|         original_image->setPixel(x, y, color.rgba()); |         original_image->setPixel(x, y, color.rgba()); | ||||||
| @ -206,7 +210,7 @@ void ImageViewer::analyzeImage() { | |||||||
| 	int r,g,b; | 	int r,g,b; | ||||||
| 	QColor color = QColor::fromRgb(image->pixel(x, y)); | 	QColor color = QColor::fromRgb(image->pixel(x, y)); | ||||||
| 	color.getRgb(&r,&g,&b); | 	color.getRgb(&r,&g,&b); | ||||||
| 	int intensity = (int)(0.299*r+0.587*g+0.114*b); | 	int intensity = calcIntensity(r, g, b); | ||||||
| 	grayscale_absolute_histogramm[intensity] += 1; | 	grayscale_absolute_histogramm[intensity] += 1; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @ -250,7 +254,7 @@ int ImageViewer::getIntensityVariance() { | |||||||
|       QColor color = QColor::fromRgb(image->pixel(x, y)); |       QColor color = QColor::fromRgb(image->pixel(x, y)); | ||||||
|       int r,g,b; |       int r,g,b; | ||||||
|       color.getRgb(&r,&g,&b); |       color.getRgb(&r,&g,&b); | ||||||
|       int intensity = (int)(0.299*r+0.587*g+0.114*b); |       int intensity = calcIntensity(r, g, b); | ||||||
|       int diff = std::abs(intensity - average_intensity); |       int diff = std::abs(intensity - average_intensity); | ||||||
|       sumDifference += diff; |       sumDifference += diff; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -41,6 +41,7 @@ | |||||||
| #ifndef IMAGEVIEWER_H | #ifndef IMAGEVIEWER_H | ||||||
| #define IMAGEVIEWER_H | #define IMAGEVIEWER_H | ||||||
| 
 | 
 | ||||||
|  | #include <QtGlobal> | ||||||
| #include <QMainWindow> | #include <QMainWindow> | ||||||
| #include <QPrinter> | #include <QPrinter> | ||||||
| #include <QtGui> | #include <QtGui> | ||||||
| @ -132,6 +133,7 @@ class ImageViewer : public QMainWindow { | |||||||
| 
 | 
 | ||||||
|   private: |   private: | ||||||
|     // Custom methods
 |     // Custom methods
 | ||||||
|  |     int calcIntensity(int r, int g, int b); | ||||||
|     void drawRainbowCross(int h); |     void drawRainbowCross(int h); | ||||||
|     int getAverageIntensity(); |     int getAverageIntensity(); | ||||||
|     int getIntensityVariance(); |     int getIntensityVariance(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user