Changeset 105 in Sophya for trunk/SophyaPI


Ignore:
Timestamp:
May 6, 1998, 11:54:17 AM (27 years ago)
Author:
ansari
Message:

Correction bugs P2DArrayAdapter Reza 6/05/98

Location:
trunk/SophyaPI/PI
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PI/parradapter.cc

    r104 r105  
    66#include <math.h>
    77
     8#include "ctimer.h"
    89#include "parradapter.h"
    910
     
    2829if ( (sx > 0) && (sy > 0) )   { sX = sx; sY = sy; }
    2930if (invX) { sgnX = -1;  offX = sX; }
     31else { sgnX = 1; offX = 0; }
    3032if (invY) { sgnY = -1;  offY = sY; }
     33else { sgnY = 1; offY = 0; }
    3134}
    3235
     
    4144int P2DArrayAdapter::CheckDyn(float& min, float& max, float& moy, float& sig, int& nbnul, int& nbsat, int vit)
    4245{
     46TIMEF ;
    4347double m = 0.;
    4448double s = 0.;
     
    4953
    5054if (min >= max) { min = -9.e19; max = 9.e19; }
    51 float minpix = 9.e19;
    52 float maxpix = -9.e19;
     55float minpix = max;
     56float maxpix = min;
    5357float pixv;
     58printf("DEBUG_CHECKDYN-IN %d - %g %g ", vit, min, max);
    5459
    5560int n = 0;
     
    6065}
    6166
     67printf(" -> vit=%d \n", vit);
    6268for(int j=0; j<sY; j++)
    6369  for(int i=0; i<sX; i++)   {
    64     if (n%vit != 0)  continue;
    65     n++;
     70    if (++n % vit != 0)  continue;
    6671    pixv = Value(i,j);
    6772    if (pixv <= max && pixv >= min) { 
    6873      if (pixv < minpix)  minpix = pixv;
    69       else if (pixv > maxpix)  maxpix = pixv;
     74      if (pixv > maxpix)  maxpix = pixv;
    7075      dv = (double)pixv;
    7176      m += dv;  s += (dv*dv);
     
    7782  }
    7883
    79 nbnul = n0;  nbsat = n9;
    80 
    81 n = sX*sY-(n0+n9);
     84nbnul = n0*vit;  nbsat = n9*vit;
     85min = minpix;  max = maxpix;
     86
     87n -= (n0+n9);
    8288if (n > 0)
    8389  { dv = (double)n;  m /= dv;  s = s/dv - m*m;
     
    8692else { moy = 0.;  sig = -1.; }
    8793
     94printf("DEBUG_CHECKDYN: %d %g %g - %g %g \n", n, min, max, moy, sig);
    8895return(n);
    8996}
     
    93100void P2DArrayAdapter::ComputeLut_PicHisto(float& min, float& max, int nbsig, float fracmax)
    94101{
     102TIMEF ;
    95103int MINNBIN = 64;
    96104int MAXNBIN = 1024;
     
    136144for(int j=0; j<sY; j++)
    137145  for(int i=0; i<sX; i++) {
    138     if ( (kk%vitesse) != 0) continue;
    139     kk++;
     146    if ( (++kk % vitesse) != 0) continue;
    140147   /* remplissage de l'histogramme */
    141148    bin = (int)((Value(i, j) - minhis) / binwidth) ;
     
    212219/* --Methode-- */
    213220unsigned char * P2DArrayAdapter::ComputePixmap(LUT* lut, int ofx, int ofy, int zm,
    214                 int xwsz, int ywsz, unsigned char * opix, int * oxsp, int * oysp){
     221                int xwsz, int ywsz, unsigned char * opix, int * oxsp, int * oysp)
     222{
     223TIMEF ;
    215224unsigned char *pix, *pp, ucp;
    216225int zmm=1;
     
    260269
    261270pp = pix;
    262 if (zm == 1)    // Pas de zoom 
    263   {
    264   for(j=ofy; j<ofy+npy; j++)
    265     for(i=ofx; i<ofx+npx; i++)
    266       { *pp = (unsigned char) lut->Apply((*this)(i,j));  pp++; }
    267   }
    268 else if (zm < -1)        // Compression
    269   {
    270   float fv = (float)(zmm*zmm);
    271   for(j=ofy; j<ofy+npy; j+=zmm)
    272     for(i=ofx; i<ofx+npx; i+=zmm)
    273       {
    274       vpx = 0;
    275       for(l=0; l<zmm; l++)
    276         for(k=0; k<zmm; k++)
    277           vpx += (*this)(i+k, j+l);
    278       *pp = (unsigned char) lut->Apply(vpx/fv);
    279       pp++;
    280       }
    281   }
    282 else      // Agrandissement
    283   {
    284   for(j=ofy; j<ofy+npy; j++)
    285     for(i=ofx; i<ofx+npx; i++)
    286       {
    287       ucp = (unsigned char) lut->Apply((*this)(i,j));
    288       for(l=0; l<zm; l++)
    289         {
    290         pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm);
    291         for(k=0; k<zm; k++)  { *pp = ucp; pp++; } 
    292         }
    293       }
    294   }
    295 
     271if (eXY) { // Echange Axe X,Y
     272  if (zm == 1)  {  // Pas de zoom 
     273    for(j=ofy; j<ofy+npy; j++)
     274      for(i=ofx; i<ofx+npx; i++)
     275        { *pp = (unsigned char) lut->Apply(
     276                this->Value(j*sgnX+offX, i*sgnY+offY)); 
     277           pp++; }
     278    }
     279  else if (zm < -1) {       // Compression
     280    float fv = (float)(zmm*zmm);
     281    for(j=ofy; j<ofy+npy; j+=zmm)
     282      for(i=ofx; i<ofx+npx; i+=zmm) {
     283        vpx = 0;
     284        for(l=0; l<zmm; l++)
     285          for(k=0; k<zmm; k++)
     286            vpx += this->Value( (j+l)*sgnX+offX, (i+k)*sgnY+offY);
     287        *pp = (unsigned char) lut->Apply(vpx/fv);
     288        pp++;
     289        }
     290    }
     291  else  {      // Agrandissement
     292    for(j=ofy; j<ofy+npy; j++)
     293      for(i=ofx; i<ofx+npx; i++)  {
     294        ucp = (unsigned char) lut->Apply(this->Value(j*sgnX+offX, i*sgnY+offY));
     295        for(l=0; l<zm; l++)  {
     296          pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm);
     297          for(k=0; k<zm; k++)  { *pp = ucp; pp++; } 
     298          }
     299        }
     300    }
     301  }     // Fin du cas avec echange d'axe X/Y
     302else {
     303  if (zm == 1)  {  // Pas de zoom 
     304    for(j=ofy; j<ofy+npy; j++)
     305      for(i=ofx; i<ofx+npx; i++)
     306        { *pp = (unsigned char) lut->Apply(
     307                this->Value(i*sgnX+offX, j*sgnY+offY)); 
     308           pp++; }
     309    }
     310  else if (zm < -1) {       // Compression
     311    float fv = (float)(zmm*zmm);
     312    for(j=ofy; j<ofy+npy; j+=zmm)
     313      for(i=ofx; i<ofx+npx; i+=zmm) {
     314        vpx = 0;
     315        for(l=0; l<zmm; l++)
     316          for(k=0; k<zmm; k++)
     317            vpx += this->Value( (i+k)*sgnX+offX, (j+l)*sgnY+offY);
     318        *pp = (unsigned char) lut->Apply(vpx/fv);
     319        pp++;
     320        }
     321    }
     322  else  {      // Agrandissement
     323    for(j=ofy; j<ofy+npy; j++)
     324      for(i=ofx; i<ofx+npx; i++)  {
     325        ucp = (unsigned char) lut->Apply(this->Value(i*sgnX+offX, j*sgnY+offY));
     326        for(l=0; l<zm; l++)  {
     327          pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm);
     328          for(k=0; k<zm; k++)  { *pp = ucp; pp++; } 
     329          }
     330        }
     331    }
     332  }
    296333return(pix);
    297334}
  • trunk/SophyaPI/PI/pitestapp.cc

    r60 r105  
    206206static ScSample *scs1, *scs2, *scs3;
    207207static PIScrollBar *scb, *scb2;
    208 static ExBWdg *exb1;
     208static ExBWdg *exb1, *exb2;
    209209
    210210static PIWindow * wp3, *wp2, *wp4, *wp5, *wp6;
     
    338338  app = new PITestApp(350, 350);
    339339
    340   wp2 = new PIWindow(app, "Window-2", PIWK_normal,  200, 200, 250, 250);
     340  wp2 = new PIWindow(app, "Window-2", PIWK_normal,  400, 200, 250, 250);
    341341  ExBWdg bw(wp2, "BWdg", 150, 150, 10, 40);
    342342  bw.SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed);
     343  ExBWdg bw2(wp2, "BWdg2", 180, 180, 200, 10);
     344  bw.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic);
    343345
    344346  wp4 = new PIWindow(app, "Window-4", PIWK_dialog,  200, 200, 350, 350);
Note: See TracChangeset for help on using the changeset viewer.