рдУрдЯреНрд╕реВ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛

рд╣реИрд▓реЛ, рдкреНрд░рд┐рдп рд╣реИрдмреНрд░реЗрдЯрд╛рдЯреЗрдЯреЗрд▓реА рдФрд░ рд╣реИрдмреНрд░рд┐рдЯрд┐рдХрд┐рдХреАред рдореИрдВ рдЖрдЬ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдРрд╕реЗ рд╣реА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╖рдп рдкрд░ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ред

рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рддреЗрдЬ рдФрд░ рдХреБрд╢рд▓ рдУрдЯреНрд╕реБ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реАрдорд╛ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирддреЗ рд╣реИрдВред





рдкрд░рд┐рдЪрдп



рддреЛ, рдЪрд▓реЛ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЙрд╕ рд╡рд╕реНрддреБ рдХреА рдЫрд╡рд┐ рдкрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред



рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдордХред рдПрдХ рд╡рд╕реНрддреБ (рдпрд╛ рд╡рд╕реНрддреБрдУрдВ) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЪрдордХ, рдпрд╛ рдереНрд░реЗрд╢реЛрд▓реНрдб рд╡рд░реНрдЧреАрдХрд░рдг (рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдЪреБрдирдирд╛ рд╣реИред рдРрд╕реА рджрд╣рд▓реАрдЬ рдХрд╛ рдЕрд░реНрде рдЫрд╡рд┐ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╡рд╕реНрддреБ (рдЕрдЧреНрд░рднреВрдорд┐) рдФрд░ рдПрдХ рдЕрдВрдзреЗрд░реЗ рдкреГрд╖реНрдарднреВрдорд┐ (рдкреГрд╖реНрдарднреВрдорд┐) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╛рдиреА рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрди рдкрд┐рдХреНрд╕рд▓реНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЪрдордХ рдереНрд░реЗрд╢реЛрд▓реНрдб ( I > T ) рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЕрдиреНрдп рдкрд┐рдХреНрд╕рд▓реНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдХреА рдЪрдордХ рдереНрд░реЗрд╢реЛрд▓реНрдб ( I < T ) рд╕реЗ рдиреАрдЪреЗ рд╣реЛрддреА рд╣реИред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рдореБрдЦ рдкреИрд░рд╛рдореАрдЯрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб рдЯреА рд╣реИред рдЙрд╕реЗ рдХреИрд╕реЗ рдЪреБрдиреЗрдВ?



рджрд░реНрдЬрдиреЛрдВ рджрд╣рд▓реАрдЬ рдЪрдпрди рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╡рд┐рдзрд┐ 1979 рдореЗрдВ рдЬрд╛рдкрд╛рдиреА рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдиреЛрдмреБрдпреБрдХреА рдУрддреНрд╕реБ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред



рдУрдЯреНрд╕реВ рд╡рд┐рдзрд┐



рдЪрд▓реЛ рдПрдХ 8-рдмрд┐рдЯ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рджрд╣рд▓реАрдЬ рдЯреА рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ред 24-рдмрд┐рдЯ рдЫрд╡рд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ 8-рдмрд┐рдЯ рдореЗрдВ рдУрд╡рд░рдЯреЗрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

I = 0.2125 R + 0.7154 G + 0.0721 B



рдУрдЯреНрд╕реВ рдХреА рд╡рд┐рдзрд┐ рдереНрд░реЗрд╢реЛрд▓реНрдб рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдПрдХ рдбрд┐рдмреНрдмреЗ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирдореВрдирд╛ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрд╕рдореЗрдВ рдЧрд┐рд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрдпрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрдордХ рдХрд╛ рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИ, рдЬреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рдХреЛ 0 рд╕реЗ 255 рддрдХ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдЫрд╡рд┐:





рдЗрд╕ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо:





рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рд╕реЗ, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧ рд╣реИрдВред рдУрдЯреНрд╕реВ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рджрд╣рд▓реАрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдпрдерд╛рд╕рдВрднрд╡ "рдШрдиреЗ" рд╣реЛред рдЗрд╕реЗ рдЧрдгрд┐рддреАрдп рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрдВрдЯреНрд░рд╛-рдХреНрд▓рд╛рд╕ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рднрд┐рдиреНрдирддрд╛рдУрдВ рдХреЗ рднрд╛рд░рд┐рдд рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:





рдпрд╣рд╛рдБ w рдФрд░ w 2 рдХреНрд░рдорд╢рдГ рдкреНрд░рдердо рдФрд░ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рд╣реИрдВред



рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ, рдУрддреНрд╕реБ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯреНрд░рд╛-рдХреНрд▓рд╛рд╕ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░рдирд╛ рдЗрдВрдЯрд░-рдХреНрд▓рд╛рд╕ рд╡рд┐рдЪрд░рдг рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ:





рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП 1 рдФрд░ 2 рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рдорд╛рди рд╣реИрдВред



рдЗрд╕ рд╕реВрддреНрд░ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ w 1 ( t + 1), w 2 ( t + 1), 1 ( t + 1), a 2 ( t + 1) w 1 ( t ) рдХреЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдбрдмреНрд▓реНрдпреВ 2 ( рдЯреА ), рдПрдХ 1 ( рдЯреА ), рдПрдХ 2 ( рдЯреА ) ( рдЯреА рд╡рд░реНрддрдорд╛рди рджрд╣рд▓реАрдЬ рд╣реИ)ред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдиреЗ рд╣рдореЗрдВ рддреНрд╡рд░рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА:

  1. рд╣рдо рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо (рдкрд┐рдХреНрд╕рд▓ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ) рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╕рднреА рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рд╣реИ; рдЫрд╡рд┐ рднрд░ рдХреЗ рдорд╛рд░реНрдЧ рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред
  2. рджрд╣рд▓реАрдЬ t = 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░ рд╡рд┐рдЪрд░рдг at b ( t ) рдХреЛ рдкреБрди: рдкрд░рд┐рдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдкреВрд░реНрдг рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд┐рдЪрд░рдг рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдЪрд░рдг рдФрд░ рдЯреА = рдЯреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
  3. рд╡рд╛рдВрдЫрд┐рдд рд╕реАрдорд╛ рдЯреА рд╣реИ ред


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг рд╣реИред рд╕рдЯреАрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдорд╛рд░реНрдЧ (рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) 1 рд╕реЗ 254 рддрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдиреНрдпреВрдирддрдо рд╕реЗ рдЕрдзрд┐рдХрддрдо рдЪрдордХ рдиреНрдпреВрдирддрдо рддрдХред рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП C ++ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдВрдЧреЗред



рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:





рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕реАрдорд╛:





рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг



рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрд╕рд▓реА рджрд┐рдЦрд╛рдирд╛ рднреА рдЪрд╛рд╣реВрдВрдЧрд╛

рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред



рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдереАрд╕рд┐рд╕ рдореЗрдВ, рдЫрд╡рд┐ рдкрд░ рдмрд╛рд░рдХреЛрдб рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИ:





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





рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдмрд╛рд░рдХреЛрдб рдХреА рдЫрд╡рд┐ рдЫрд╡рд┐ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ рдЖрд╕рдкрд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрдордХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИред рдЕрдм рдЖрдк рдУрдЯреНрд╕реВ рд╡рд┐рдзрд┐ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:





рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдмрд╛рд░рдХреЛрдб рд╣реИред



C ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди



рдЦреИрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде C ++ рдореЗрдВ рдУрдЯреНрд╕реБ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдереНрд░реЗрд╢реЛрд▓реНрдб рдЧрдгрдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  1. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  2. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  3. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  4. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  5. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  6. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  7. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  8. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  9. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  10. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  11. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  12. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  13. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  14. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  15. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  16. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  17. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  18. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  19. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  20. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  21. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  22. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  23. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  24. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  25. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  26. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  27. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  28. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  29. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  30. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  31. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  32. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  33. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  34. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  35. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  36. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  37. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  38. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  39. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  40. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  41. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  42. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  43. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  44. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  45. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  46. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  47. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  48. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  49. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  50. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  51. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  52. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  53. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  54. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  55. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  56. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  57. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  58. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  59. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  60. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  61. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  62. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  63. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  64. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



  65. typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .



typedef unsigned char imageInt; // int otsuThreshold(imageInt *image, int size) { // NULL . , // // int min = image[0]; int max = image[0]; for ( int i = 1; i < size; i++) { int value = image[i]; if ( value < min) min = value ; if ( value > max) max = value ; } // min max, // 256 int histSize = max - min + 1; int * hist = new int [histSize]; // for ( int t = 0; t < histSize; t++) hist[t] = 0; // for ( int i = 0; i < size; i++) hist[image[i] - min]++; // : int m = 0; // m - , int n = 0; // n - for ( int t = 0; t <= max - min; t++) { m += t * hist[t]; n += hist[t]; } float maxSigma = -1; // int threshold = 0; // , maxSigma int alpha1 = 0; // 1 int beta1 = 0; // 1, // alpha2 , .. m - alpha1 // beta2 , .. n - alpha1 // t for ( int t = 0; t < max - min; t++) { alpha1 += t * hist[t]; beta1 += hist[t]; // 1. float w1 = ( float )beta1 / n; // , w2 , .. 1 - w1 // a = a1 - a2, a1, a2 - 1 2 float a = ( float )alpha1 / beta1 - ( float )(m - alpha1) / (n - beta1); // , sigma float sigma = w1 * (1 - w1) * a * a; // sigma , maxSigma if (sigma > maxSigma) { maxSigma = sigma; threshold = t; } } // , min, threshold += min; // , , :) return threshold; } * This source code was highlighted with Source Code Highlighter .







рдирд┐рд╖реНрдХрд░реНрд╖



рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдЯреНрд╕реВ рдкрджреНрдзрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдлрд╛рдпрджреЗ рд╣реИрдВ:
  1. рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрд╕рд╛рдиреАред
  2. рд╡рд┐рдзрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ, рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╕реАрдорд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред
  3. рддреЗрдЬреА рд╕реЗ рдиреЗрддреГрддреНрд╡ рд╕рдордпред рдУ ( рдПрди ) рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдПрди рдЫрд╡рд┐ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
  4. рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рд▓реЗ рд▓реЛ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдорд╛рдЯрд▓реИрдм рдореЗрдВ, рдпрд╣ рдЧреНрд░реЗрдереНрд░реЗрд╢ () рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ (рдореИрдВрдиреЗ рдорд╛рдЯрд▓рд╛рдм рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреНрдпреЛрдВ рджрд┐рдпрд╛? рдмрд╕ рдпрд╣ рдЙрдкрдХрд░рдг рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рд╣реИ)ред
рдиреБрдХрд╕рд╛рди:

  1. рдереНрд░реЗрд╢реЛрд▓реНрдб рдмрд┐рдирд╛рд░рд╛рдЗрдЬреЗрд╢рди рдкреНрд░рддрд┐ рдПрд╕рдИ рдЕрд╕рдорд╛рди рдЫрд╡рд┐ рдЪрдордХ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдиреАрдп рд╕реАрдорд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ

  1. рдУрддреНрд╕реБ, рдПрдиред, "рдЧреНрд░реЗ-рд▓реЗрд╡рд▓ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдореНрд╕ рд╕реЗ рдПрдХ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЪрдпрди рд╡рд┐рдзрд┐," рд╕рд┐рд╕реНрдЯрдо, рдореИрди рдФрд░ рд╕рд╛рдЗрдмрд░рдиреЗрдЯрд┐рдХреНрд╕, рд╡реЙрд▓реНрдпреВрдо рдкрд░ IEEE рд▓реЗрдирджреЗрдиред 9, рдирд╣реАрдВред 1, 1979, рдкреАрдкреАред 62-66ред
  2. рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛
  3. рд▓реЗрдХреНрдЪрд░рд░ рджреНрд╡рд╛рд░рд╛ рдиреЛрдЯреНрд╕
  4. рдПрдХ рдкреНрд░рднрд╛рд╡реА UPC рдмрд╛рд░рдХреЛрдб рдкрд╣рдЪрд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЗрдЯред



All Articles