рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЫрд╡рд┐ рд╕реНрдерд┐рд░реАрдХрд░рдг

рдЫрд╡рд┐
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ! рдЖрдЬ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд╕рдмрд╕реЗ рдкрд╕рдВрджреАрджрд╛ рд╕рд╛рдЗрдХрд┐рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдВрддрд░рддрдо рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдореИрдВ рджреВрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ - рдХрд╛рдлреА рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЪреЗрд▓реНрдпрд╛рдмрд┐рдВрд╕реНрдХ рдореЗрдВ рдПрдХ рд░реЗрдбрд┐рдпреЛ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ (рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдФрд░ рдЕрдм рдПрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдирд╣реАрдВ рд╣реИ) рдПрдХ рдореЗрдЧрд╛-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛: рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдкреНрдЯрд┐рдХрд▓-рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдореЙрдбреНрдпреВрд▓ред рдпрд╣ рд░реЛрдЯрд░реА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкрд░ рдПрдХ рд╕реНрд╡рд╕реНрде рдЪреАрдЬ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреАрди рдХреИрдорд░реЗ рд╣реИрдВ (рд░рдВрдЧ - рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ, рдмреАрдбрдмреНрд▓реНрдпреВ рдлреЛрдЯреЛрд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ - рдЧреЛрдзреВрд▓рд┐ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рдерд░реНрдорд▓ рдЗрдореЗрдЬрд░ - рд░рд╛рдд рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП)ред рдРрд╕рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ 50 рдореАрдЯрд░ рдКрдВрдЪреЗ рдЯреЙрд╡рд░ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рдЖрдк рджрд┐рди рдФрд░ рд░рд╛рдд рдореЗрдВ 4-5 рдХрд┐рд▓реЛрдореАрдЯрд░ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рд╡реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдкрд╛рдПрдВрдЧреЗред

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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ - рдореЙрдбреНрдпреВрд▓ рдХрд╛рдлреА рдЙрдЪреНрдЪ рдЯрд╛рд╡рд░реЛрдВ рдкрд░ рд░рдЦреЗ рдЧрдП рд╣реИрдВред рдЗрддрдиреА рдКрдВрдЪрд╛рдИ рдкрд░ рддреЗрдЬ рд╣рд╡рд╛ рдХреЗ рдХрд╛рд░рдг, рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рдкрддрд▓реЗ рдЭрдЯрдХреЗ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдХреИрдорд░реЗ рдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рдХреЛрдг рдЬрд┐рддрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдФрд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреИрдорд░рд╛ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рд╢рд┐рдлреНрдЯ)ред рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ, рдпрд╣ рддреБрдЪреНрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреА рдЭрдЯрдХреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдХрд╣реАрдВ рди рдХрд╣реАрдВ gyro-stabilized platform рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдпрд╣ SURF рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

рдХреНрдпреЛрдВ SURF рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ

рдХреНрд░рдо рдореЗрдВ:

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

2 - рдкреНрд░рджрд░реНрд╢рдиред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдордп рд╕реАрдорд╛ рдЧрдВрднреАрд░ рд╣реИ - рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ 13 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рдЕрдВрддрд┐рдо рджреЛ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдмреАрдЪ рдСрдлрд╕реЗрдЯ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдоред SURF рд╕реЗ, рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рднреА рдирд╣реАрдВ рдереЗред

3 - рд╣рд╕реНрддрдХреНрд╖реЗрдкред рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд┐рд╕реНрдерд╛рдкрди, рди рдХрд┐ рдкреВрд░реЗ рдлреНрд░реЗрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд┐рд▓рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЧрд▓рдд рдорд┐рд▓рд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред рдПрдХ рдЬреАрд╡рд┐рдд рдЪрд┐рддреНрд░ рдореЗрдВ, рдпрд╣ рдПрдХ рджрд┐рд╢рд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рджреБрд░реНрд▓рдн "рдЭрдЯрдХреЗ" рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдореЗрд░реА рдмрд╛рдЗрдХ

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

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

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

рд╕рднреА рддреАрди рдХрджрдо рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ CUDA рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рдм FPGAs рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдирдП рдлреНрд░реЗрдо рдХреА рддреИрдпрд╛рд░реА

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рд╕реЗ рдЗрдирдкреБрдЯ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд░рдВрдЧ, рдФрд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рд╣рд╕реНрддрдХреНрд╖реЗрдкред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рд░рдВрдЧ рдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдПрдХ рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдЖрдХреГрддрд┐ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред рдпрджрд┐ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ, рддреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
struct pixel { unsigned char R, G, B; } pixel Image[width, height]; unsigned int GSImage[width, height]; unsigned int processedImage[width, height]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { GSImage[x, y] = Image[x, y].R + Image[x, y].G + Image[x, y].B; } } for (int x = 1; x < width; x++) { for (int y = 1; y < height; y++) { preprocessedImage[x, y] = 0; if (GSImage[x, y] - GSImage[x - 1, y] > threshold) preprocessedImage[x, y]++; if (GSImage[x, y] - GSImage[x, y - 1] > threshold) preprocessedImage[x, y]++; if (GSImage[x, y] - GSImage[x + 1, y] > threshold) preprocessedImage[x, y]++; if (GSImage[x, y] - GSImage[x, y + 1] > threshold) preprocessedImage[x, y]++; } } 

рдПрдХ рдЦрдВрдб-рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдПрдХ рдлреНрд░реЗрдо рдХрд╛ рдЕрдиреБрд╡рд╛рдж

рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЪрд░рдгред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдпрд╣рд╛рдБ рдкрдврд╝рдХрд░ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдиреЗ рдКрдкрд░ рдХреЗ рд▓рд┐рдВрдХ рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рджреНрд╡рд┐-рдЖрдпрд╛рдореА (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рд╕рд░рдгреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ X рдФрд░ Y рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдореВрд▓ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ [0..X, 0..Y]ред

рджреВрд╕рд░реА рдмрд╛рдд - рдЬрд┐рд╕реЗ рдореИрдВ рдЦрдВрдб-рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рд╣рдореЗрдВ рдПрдХ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ X рдФрд░ Y рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╕рдордиреНрд╡рдп рдХреЗ рд╕рд╛рде рдореВрд▓ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ [XN) .. X, (YM) .. Y], рдЬрд╣рд╛рдВ N рдФрд░ M рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЧрддрд┐ / рд╕рдЯреАрдХрддрд╛ рдЕрдиреБрдкрд╛рдд рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдореВрд▓реНрдп 15 рдФрд░ 15 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреНред рдкрд░рд┐рдгрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡ рдореВрд▓ рд╕рд░рдгреА рдХреЗ 256 рддрддреНрд╡реЛрдВ (16x16 рд╡рд░реНрдЧ) рдХрд╛ рдпреЛрдЧ рдерд╛ред рд╣рд╛рдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдзреБрдВрдзрд▓рд╛рдкрди рд╣реИред

рд▓реЗрдХрд┐рди рдЫрд╡рд┐ рдХрд╛ рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ред рдереЛрдбрд╝реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдЗрд╕реЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
 unsigned int Image[width, height]; unsigned int processedImage[width, height]; processedImage[0, 0] = Image[0, 0]; for (int x = 1; x < width; x++) { processedImage[x, 0] = Image[x, 0] + processedImage[x-1, 0]; } for (int y = 1; y < height; y++) { processedImage[0, y] = Image[0, y] + processedImage[0, y-1]; } for (int x = 1; x < width; x++) { for (int y = 1; y < height; y++) { processedImage[x, y] = Image[x,y]+processedImage[x-1,y]+processedImage[x,y-1]-processedImage[x-1,y-1]; } } 

рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдереНрд░реЗрдб рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдмреЗрд╢рдХред рдпрд╣ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рд▓рдВрдмрд╡рддред рдлрд┐рд░ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреНрд░рдорд╢рдГ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рдореЗрдЯрддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 unsigned int Image[width, height]; unsigned int horizontalImage[width, height]; unsigned int processedImage[width, height]; //  for (int y = 0; y < height; y++) { horizontalImage[0, y] = Image[0, y]; for (int x = 1; x < width; x++) { horizontalImage[x, y] = Image[x, y] + horizontalImage[x-1, y]; } } //  for (int x = 0; x < width; x++) { processedImage[x, 0] = horizontalImage[x, 0]; for (int y = 1; y < height; y++) { processedImage[x, y] =horizontalImage[x, y] + processedImage[x, y-1]; } } 

рдФрд░ рдЕрдм рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрди = рдПрдо = 15 рдХреЗ рд╕рд╛рде рдЦрдВрдб-рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП:
 unsigned int Image[width, height]; unsigned int horizontalImage[width, height]; unsigned int processedImage[width, height]; //  for (int y = 0; y < height; y++) { horizontalImage[0, y] = Image[0, y]; for (int x = 1; x < 16; x++) { horizontalImage[x, y] = Image[x, y] + horizontalImage[x-1, y]; } for (int x = 16; x < width; x++) { horizontalImage[x, y] = Image[x, y] + horizontalImage[x-1, y] - Image[x-16, y]; } } //  for (int x = 0; x < width; x++) { processedImage[x, 0] = horizontalImage[x, 0] for (int y = 1; y < 16; y++) { processedImage[x, y] = horizontalImage[x, y] + processedImage[x, y-1]; } for (int y = 16; y < height; y++) { processedImage[x, y] = horizontalImage[x, y] + processedImage[x, y-1] - horizontalImage[x, y-16]; } } 

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

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ 704x576 рдкрд┐рдХреНрд╕реЗрд▓ рдерд╛ред рдкрд┐рдЫрд▓реЗ рдлреНрд░реЗрдо рдХреЗ рдЦрдВрдб-рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реЗ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ 1140 рдЦрдВрдбреЛрдВ (рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ 38x30 рдмреНрд▓реЙрдХ, рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдирд╣реАрдВ, 4560 рдмрд╛рдЗрдЯреНрд╕) рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛:
рдЫрд╡рд┐
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 256x256 рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдХрд╛рд▓реНрдкрдирд┐рдХ рддрд╕реНрд╡реАрд░ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ 16x16 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЦрдВрдбреЛрдВ рдХреЗ рдЦрдВрдб-рдЕрднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВ)ред рдХреЗрдВрджреНрд░ рдореЗрдВ, рдмреНрд▓реЙрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, 10 рд╕реЗ 10 рдЯреБрдХрдбрд╝реЗред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 unsigned int IntegralImage[256, 256]; unsigned int NextIteration[10, 10]; for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { NextIteration[x, y] = IntegralImage[(x+4)*16-1, (y+4)*16-1]; } } 

рд╣рдореЗрдВ рдЗрд╕ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ - рдпрд╣ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдореИрдЪ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ

рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ, рдлрд┐рдирд┐рд╢ рд▓рд╛рдЗрдиред рдпрджрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдлреНрд░реЗрдо рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдм рддрдХ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ)ред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓рд╛ рдлреНрд░реЗрдо рдирд╣реАрдВ рд╣реИ, рддреЛ NextIteration рд╕рд░рдгреА рдХреЛ рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдирд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЗрд╕реЗ PrevIteration рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ рдорд┐рд▓рд╛рдПрдВ рдирд╣реАрдВред

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

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ - рдпрд╣ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрджреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдкрд┐рдХреНрд╕рд▓ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд┐рдЪрд▓рди рдХреЛ рд╕реНрдерд┐рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, X рдФрд░ Y рдореЗрдВ рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕ 30 рдкрд┐рдХреНрд╕рд▓реНрд╕ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдСрдлрд╕реЗрдЯ рдореЗрдВ рдЕрдВрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 unsigned int IntegralImage[256, 256]; unsigned int PrevIteration[10, 10]; unsigned int Differences[61, 61]; for (int X = 0; X < 61; X++) { for (int Y = 0; Y < 61; Y++) { Differences[X, Y] = 0; } } //     +-30      3721  for (int X = 0; X < 61; X++) { for (int Y = 0; Y < 61; Y++) { for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { Differences[X, Y] += abs(PrevIteration[x,y]-IntegralImage[(x+4)*16-31+X,(y+4)*16-31+Y]; } } } } 


рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд░рдгреА рдЕрдВрддрд░ рдореЗрдВ рдиреНрдпреВрдирддрдо рддрддреНрд╡ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрджрд┐ рдпрд╣ [0, 30] рд╣реИ - рддреЛ рдирдпрд╛ рдлреНрд░реЗрдо 30 рдкрд┐рдХреНрд╕рд▓ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдЧрд░ [60, 30] - рддреЛ рдмрд╛рдИрдВ рдУрд░ 30 рдкрд┐рдХреНрд╕реЗрд▓ред

рдкрд░рд┐рдгрд╛рдо

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдЕрднрд┐рдирд╡ рдпрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд╣рд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдкреВрд░реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд▓реЗрдЦ рд▓рдВрдмрд╛ рдФрд░ рднреНрд░рд╛рдордХ рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕реНрдкрд╖реНрдЯ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВ, рдпрд╛ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдЕрдВрдд рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд┐рдХрд▓рд╛ред GeForce GTX560 рд╕реНрддрд░ рдХреЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдкрд░, рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдерд╛ - рдЖрдХрд╛рд░ 704x576 рдореЗрдВ 75 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рд╕рдордп рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЬрд┐рди рдЕрднреА рднреА рдерд╛ред рдмреЗрд╢рдХ, рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ CUDA рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВ рдЫреБрдЖред

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

рдХрдЪреНрдЪрд╛

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

рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧ рдФрд░ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рд░рдЦреЗрдВ!

Source: https://habr.com/ru/post/In214027/


All Articles