summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/img.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/ovision/img.cc')
-rw-r--r--2004/i/nono/src/ovision/img.cc81
1 files changed, 14 insertions, 67 deletions
diff --git a/2004/i/nono/src/ovision/img.cc b/2004/i/nono/src/ovision/img.cc
index 4fcc7b9..e239922 100644
--- a/2004/i/nono/src/ovision/img.cc
+++ b/2004/i/nono/src/ovision/img.cc
@@ -8,16 +8,13 @@
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
-#include <math.h>
+
using namespace std;
-/// Renvoie le minimum entre 2 nombres
-inline unsigned char min(unsigned char a, unsigned char b) {
- if (a<b) return a;
- else return b;
-}
+
/// Constructeur
-Img::Img (void) {
+Img::Img (void)
+{
// Initialisation des variables
tabData = NULL;
tabSegm = NULL;
@@ -26,71 +23,19 @@ Img::Img (void) {
}
+
/// Destructeur
-Img::~Img (void) {
+Img::~Img (void)
+{
//free tabData
delete [] tabData;
}
-/// Convertit un tableau de donnees RGB en YUV
-void Img::RGBtoYUV() {
- unsigned char r,g,b;
-
- yuv = true;
-
- // Parcours du tableau et conversion des valeurs RBG en YUV
- for (unsigned long i=0; i<nbPixels; i++) {
- r = tabData[i*3];
- g = tabData[i*3+1];
- b = tabData[i*3+2];
-
- tabData[i*3] = (unsigned char)(0.299*r + 0.587*g + 0.114*b); // Y
- tabData[i*3+1] = (unsigned char)(0-0.147*r - 0.289*g + 0.437*b + 0.5); // U
- tabData[i*3+2] = (unsigned char)(00.615*r - 0.515*g - 0.100*b + 0.5); // V
- }
-}
-
-/// Convertit un tableau de donnees RGB en YUV
-void Img::RGBtoHSI() {
- unsigned char r,g,b;
-
- hsi = true;
-
- // Parcours du tableau et conversion des valeurs RBG en HSI
- for (unsigned long i=0; i<nbPixels; i++) {
- r = tabData[i*3];
- g = tabData[i*3+1];
- b = tabData[i*3+2];
-
- tabData[i*3] = (unsigned char)(acos((r-0.5f*g-0.5f*b)/(sqrt(1.0f*(r-g)*(r-g)+(r-b)*(g-b))))); // H
- tabData[i*3+1] = (unsigned char)(1-min(min(r,g),b)); // S
- tabData[i*3+2] = (unsigned char)(0.33f*(r+g+b)); // I
- }
-}
-
-/// Convertit un tableau de donnees YUV en RGB
-void Img::YUVtoRGB()
-{
- unsigned char y,u,v;
-
- yuv = false;
-
- // Parcours du tableau et conversion des valeurs YUV en RGB
- for (unsigned long i=0; i<nbPixels; i++) {
- y = tabData[i*3];
- u = tabData[i*3+1];
- v = tabData[i*3+2];
-
- tabData[i*3] = (unsigned char)(y + (1.4075 * (v - 128)));
- tabData[i*3+1] = (unsigned char)(y + ((0.3455 * (u - 128)) - (0.7169 * (v - 128))));
- tabData[i*3+2] = (unsigned char)(y + (1.7790 * (u - 128)));
- }
-}
-
/// Ecrit les valeurs RGB dans un fichier
-void Img::WriteRGB(char *filename) {
-
+void
+Img::WriteRGB (char *filename)
+{
FILE *file;
file = fopen(filename, "w+");
@@ -99,9 +44,11 @@ void Img::WriteRGB(char *filename) {
fclose(file);
}
-/// Charge les valeurs RGB dans un fichier
-void Img::LoadRGB(char *filename, int mode, int width, int height) {
+/// Charge les valeurs RGB dans un fichier
+void
+Img::LoadRGB (char *filename, int mode, int width, int height)
+{
this->width = width;
this->height = height;
nbPixels = width * height;