TI DM368 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдЬрд╛рд░реА ...

рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ TI DM368 рд╡реАрдбрд┐рдпреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдХреЛрдб рдХреЗ рдЕрд╡рд▓реЛрдХрди рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред











рдкреВрд░рд╛ рдХреИрдорд░рд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реАрдбрд┐рдпреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░, рдЬрдм рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╕рддрдд рдЪрдХреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реЗрдВрд╕рд░ рдлреНрд░реЗрдо рджрд░ 30 рдПрдлрдкреАрдПрд╕ рд╣реИ, рддреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 30 рдЧреБрдирд╛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдПрдИ (рдСрдЯреЛ рдПрдХреНрд╕рдкреЛрдЬрд╝) рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рд╛рд░ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ, рдЧреБрдгрди рдХреЗ рдЧреБрдгрд╛рдВрдХ (рд▓рд╛рдн) рдФрд░ рд╢рд┐рдлреНрдЯ (рдСрдлрд╕реЗрдЯ) рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрддрд┐рдкреНрд░рд╛рдкреНрдд рдФрд░ рдЕрдВрдзреЗрд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред







рдПрдХреНрд╕рдкреЛрдЬрд░ рдпрд╛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╢рдЯрд░ рд╕реЗрдВрд╕рд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрдзреБрдирд┐рдХ рд╕реЗрдВрд╕рд░ рдореЗрдВ, рдпрд╣ 1,000,000 рд╕реЗ 1 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рддрдХ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢ рдХреА рддреАрд╡реНрд░рддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд╛рдпрд╛рдлреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓рд╛рдн рдФрд░ рдСрдлрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ 12 рдмрд┐рдЯреНрд╕ рд╕реЗ 8 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ 8-рдмрд┐рдЯ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реЗрдВрдЬ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдорд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╣рдордиреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: рд╣рдордиреЗ рдЗрд╕реЗ рдКрдкрд░ рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛, рдЕрд░реНрдерд╛рдд, рд╣рдордиреЗ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдХрдо рд╣реЛ, рдФрд░ рд╣рдордиреЗ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреА рдирд┐рдЪрд▓реА рд╕реАрдорд╛ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ред







рдПрдХ рдФрд░ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рджреЛрдиреЛрдВ рдкреВрд░реА рдЧрддрд┐рд╢реАрд▓ рд░реЗрдВрдЬ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИ - рдПрдХ рдЪрдордХрджрд╛рд░ рдзреВрдк рдХреЗ рджрд┐рди, рдЫрд╛рдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдПрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрджреГрд╢реНрдп рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбрд┐рдорд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрднреА-рдХрднреА рджреГрд╢реНрдп рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдУрд╡рд░рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдореБрдлреНрдд рддреИрд░рд╛рдХреА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдФрд░ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд╡рд╛рдИ рдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп рдЪрдпрдирд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред







рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЪрд▓реЛ рдСрдЯреЛ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:



1. рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдХрд╛рдо рдмреЙрдХреНрд╕рдХрд╛рд░ рд╕реЗ рдЖрдВрдХрдбрд╝реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред



Uint32 w, h; Uint16 *box; status = DRV_ipipeGetBoxcarBuf(&bufId, 0); if(status!= OSA_SOK) { OSA_ERROR("ERROR: DRV_ipipeGetBoxcarBuf()\n"); return status; } pBufInfo = DRV_ipipeGetBoxcarBufInfo(bufId); DRV_ipipePutBoxcarBuf(bufId); box = pBufInfo->virtAddr; w = gDRV_ipipeObj.boxcarInfo.width; //Boxcar width h = gDRV_ipipeObj.boxcarInfo.height; // Boxcar height
      
      







2. рдлрд┐рд░, рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдИ рдХреЗ рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред



 Uint32 sz = w*h, sz4 = sz*4, hsz = 512; Uint32 hist[hsz]; int GN[3] = { -16, 0, 16}; memset(hist, 0, sizeof(Uint32)*hsz); //AE and WB for(i=0; i < sz4; i+=4) { r = box[i+2]>>2; g = box[i+1]>>2; b = box[i ]>>2; RR += r; GG += g; BB += b; Y += ((117*b + 601*g + 306*r)>>10); hist[r>>3]++; hist[g>>3]++; hist[b>>3]++; for(j=0; j < ns; j++) { GB[j] += abs(g - (b*(512 + GN[j])>>9)); GR[j] += abs(g - (r*(512 + GN[j])>>9)); } } Y = Y/sz; hn->Y.New = Y; RR = RR/sz; GG = GG/sz; BB = BB/sz;
      
      





3. рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдПред



  //Find histogram min sum = 0; for(i=0; sum < hn->SatTh; i++) sum += hist[i]; hn->Hmin.New = i; //Find histogram max sum = 0; for(i=hsz-1; sum < hn->SatTh; i--) sum += hist[i]; hn->Hmax.New = i;
      
      





4. рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рд╡реИрд▓реНрдпреВ рдмрджрд▓реЗрдВред рдпрджрд┐ Y рдХреЗ рдФрд╕рдд рдореВрд▓реНрдп рдХрд╛ рдореВрд▓реНрдп рд╣рдорд╛рд░реА рд╕реАрдорд╛ YAE рд╕реЗ рджреЛ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЪрд░рдг рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ Y рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди 20% рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред



  if(hn->Y.New) tmp = (hn->Y.New > hn->YAE) ? hn->Y.New*100/hn->YAE : hn->YAE*100/hn->Y.New; if(tmp > 200){ if(hn->Y.New) hn->Exp.New = hn->Exp.Old*(hn->Y.New*2 + hn->YAE)/(hn->Y.New*3); } else if(tmp > 20){ if(hn->Y.New > hn->YAE) hn->Exp.New = hn->Exp.Old*99/100; else hn->Exp.New = hn->Exp.Old*100/99; } if(hn->Exp.New > hn->Exp.Range.max) hn->Exp.New = hn->Exp.Range.max;
      
      





5. рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреА рддрд╕реНрд╡реАрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрдВрддрд┐рдо рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдФрд╕рдд рдХрд░рддреЗ рд╣реИрдВ:



 #define HISTORY 30 int history = 0; typedef struct IAEWBF_Param{ XDAS_Int32 Old; //Old value XDAS_Int32 New; //New value XDAS_Int32 Step; //The step of changing XDAS_Int32 Avrg; //Sum of all history value XDAS_Int32 Change; //Need for smooth change XDAS_Int32 Hist[HISTORY]; //History array XDAS_Int32 HistC; //History count XDAS_Int32 NewA; //Avarage of value IAEWBF_Range Range; //The range of value changes }IAEWBF_Param; int add_history(IAEWBF_Param *p) { int diff = 0; p->Avrg += p->New; p->Avrg -= p->Hist[p->HistC]; if(p->New) diff = abs(p->Hist[p->HistC] - p->New)*100/p->New; p->Hist[p->HistC] = p->New; p->HistC = (p->HistC == (HISTORY - 1)) ? 0 : p->HistC + 1; p->NewA = (history < HISTORY) ? p->Avrg/history : p->Avrg/HISTORY; return diff; } history++; add_history(&hn->Hmax); add_history(&hn->Hmin); add_history(&hn->Y);
      
      





6. рдФрд░ рдЕрдВрдд рдореЗрдВ, AE рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд▓рд╛рдн рдФрд░ рдмрджрд▓рд╛рд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ Y рдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп рдЖрдЙрдЯрдкреБрдЯ рд░реЗрдВрдЬ HmaxTh рдХреЗ рдмреАрдЪ рдореЗрдВ рд▓рдЧрднрдЧ рдЧрд┐рд░рддрд╛ рд╣реИред рдЧрд╛рдорд╛ рд╕реБрдзрд╛рд░ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдорд╛рди hn-> HmaxTh / 4 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред



  //Change the offset and gain hn->Offset.New = hn->Hmin.NewA; if(hn->Y.NewA - hn->Offset.New) hn->GIFIF.New = ((hn->HmaxTh/4)*512)/(hn->Y.NewA - hn->Offset.New); up = hn->Hmax.NewA*hn->GIFIF.New>>9; if((up < hn->HmaxTh) && (hn->Y.NewA - hn->Offset.New)) if(hn->Y.NewA - hn->Offset.New) hn->GIFIF.New = (((hn->HmaxTh*2 - up)/4)*512)/(hn->Y.NewA - hn->Offset.New); //Check gain range hn->GIFIF.New = hn->GIFIF.New > hn->GIFIF.Range.max ? hn->GIFIF.Range.max : hn->GIFIF.New; hn->GIFIF.New = hn->GIFIF.New < hn->GIFIF.Range.min ? hn->GIFIF.Range.min : hn->GIFIF.New;
      
      





рдЕрдм рд╕рдлреЗрдж рд╕рдВрддреБрд▓рди (WB) рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХреИрдорд░реЗ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред

рджрд┐рди рдХреЗ рдореЛрдб рдореЗрдВ, рд╣рдо рдкреВрд░реЗ рдЪрд┐рддреНрд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░рдВрдЧ рд╡рд┐рдЪрд▓рди рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рдлреЗрдж, рдХрд╛рд▓реЗ рдФрд░ рднреВрд░реЗ рд░рдВрдЧ рдореЗрдВ рдЖрд░ = рдЬреА = рдмреА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдлреЗрдж рднреА рджреГрд╢реНрдп рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдЬреНрдЬреНрд╡рд▓ рд╣реИ, рдЗрд╕рдХреА рдиреНрдпреВрдирддрд╛ рдХреБрд▓ рдКрд░реНрдЬрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдпреЛрдЧрджрд╛рди рджреЗрддреА рд╣реИред

рд░рд╛рдд рдореЗрдВ, рдЬрдм рдЗрдиреНрдлреНрд░рд╛рд░реЗрдб рдлрд╝рд┐рд▓реНрдЯрд░ рдЦреБрд▓рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЧреНрд░реЗ рд╡рд░реНрд▓реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╣рдо рдХреЗрд╡рд▓ рд░рдВрдЧ рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рдЪрдХреНрд░ рдореЗрдВ, рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЛ рднрд░рддреЗ рд╕рдордп, рд╣рдо рд╣рд░реЗ рд░рдВрдЧ рд╕реЗ рд▓рд╛рд▓ рдЬреАрдЖрд░ [рдЬреЗ] рдФрд░ рдмреНрд▓реВ рдЬреАрдмреА [рдЬреЗ] рдХреЗ рдХреБрд▓ рд╡рд┐рдЪрд▓рди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдХреЛ рдиреНрдпреВрдирддрдо рддрдХ рдкрд╛рддреЗ рд╣реИрдВ:



  if(IRcutClose){ min = GR[0]; minr = 0; for(j=1; j < ns; j++){ if(GR[j] < min) { min = GR[j]; minr = j; } } min = GB[0]; minb = 0; for(j=1; j < ns; j++){ if(GB[j] < min) { min = GB[j]; minb = j; } } if(minr != 1) hn->Rgain.New = hn->Rgain.Old + (GN[minr]*hn->Rgain.Old/512); if(minb != 1) hn->Bgain.New = hn->Bgain.Old + (GN[minb]*hn->Bgain.Old/512); } else { //Night AW mode if(RR) hn->Rgain.New = GG*hn->Rgain.Old/RR; if(BB) hn->Bgain.New = GG*hn->Bgain.Old/BB; }
      
      





рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдВрд╕рд░ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рд╡рд┐рдЪрд▓рди рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджрд┐рди рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрд╢рд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдлреЗрдж рд╕рдВрддреБрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕реЛрдиреА IMX136 рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг:







рдЖрдЗрдП рд╣рдо рдЧрд╛рдорд╛ рд╕реБрдзрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдХреИрдорд░реЗ рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдФрд░ рдорд╛рдирд╡ рдЖрдВрдЦ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╢рдХреНрддрд┐-рдХрд╛рдиреВрди рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╕рдВрд╡реЗрджрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ:



рдЧрд╛рдо [i] = рдЖрдЙрдЯ * ((рд▓реЙрдЧ (рдЖрдИ + рдЗрди *) - рд▓реЙрдЧ (* рдореЗрдВ рдП) / / (рд▓реЙрдЧ рдЗрди (рдЗрди * рдП) - рд▓реЙрдЧ (* рдП)));



рдЗрдирдкреБрдЯ рд░реЗрдВрдЬ рдХреА рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ рдХрд╣рд╛рдВ рд╣реИ,

рдЕрдзрд┐рдХрддрдо - рдЕрдзрд┐рдХрддрдо рдЙрддреНрдкрд╛рджрди рд╕реАрдорд╛,

рдПрдХ рд╡рдХреНрд░рддрд╛ рдЧреБрдгрд╛рдВрдХ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 0.05 рд╡рд┐рднрд┐рдиреНрди рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ)







рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕ рд╡рдХреНрд░ рдХреЛ LUT рдЯреЗрдмрд▓ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЧрд╛рдорд╛ рд╕реБрдзрд╛рд░ рдХреИрд╕реЗ рддрд╕реНрд╡реАрд░ рдмрджрд▓рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:







рдореИрдВ рдЕрдкрдиреЗ рдХреИрдорд░реЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░реЛрд╢рдиреА рдореЗрдВ рдХрдореА рдХреЗ рд╕рд╛рде рдПрдХ рдХрдо рдлреНрд░реЗрдо рджрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдирд╛рдЗрдЯ рдореЛрдб рдореЗрдВ, рдЬрдм рдЗрдиреНрдлреНрд░рд╛рд░реЗрдб рдлрд╝рд┐рд▓реНрдЯрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрдорд░рд╛ рд░рдВрдЧ рдореЗрдВ рд░рд╣ рд╕рдХрддрд╛ рд╣реИред



рд╣рдорд╛рд░реЗ рдХреИрдорд░реЛрдВ рдХреЗ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб Git рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ: git: //sigrand.ru/sigticam.gitред рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: git рдХреНрд▓реЛрди git: //sigrand.ru/sigticam.itред

рдЙрдкрд░реЛрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕рд┐рдЧреНрдЯрд┐рдХреИрдо / рд╕рд┐рдЧреНрдЯрд┐рдХреИрдо / рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо / ti_dm368 / appro2 / av_capture / рдлреНрд░реЗрдорд╡рд░реНрдХ / alg / src / aewbf_sig рдореЗрдВ рд╣реИрдВ

рдЖрдк рд╣рдорд╛рд░реЗ рдХреИрдорд░реЛрдВ рд╕реЗ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдБ ред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреИрдорд░реЛрдВ рдореЗрдВ рдСрдЯреЛрдлреЛрдХрд╕ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдФрд░ рдПрдЪрдбреАрдЖрд░ рдпрд╛ рдбрдмреНрд▓реНрдпреВрдбреАрдЖрд░ рдХреА рд╡реНрдпрд╛рдкрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реАрдорд╛ рдХреНрдпрд╛ рд╣реИред



ред



All Articles