рдПрд╕рдПрд╕рдкреА - рдореВрд▓ рджреЛрд╖рд░рд╣рд┐рдд рдЫрд╡рд┐ рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо

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



рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рджреЛ рд╕рдВрдкреАрдбрд╝рди рдореЛрдб рд╣реИрдВ:

  1. рджреЛрд╖рд░рд╣рд┐рдд - рдЬрд┐рд╕рдореЗрдВ, рд╡рд┐рдШрдЯрди рдХреЗ рдмрд╛рдж рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрдЯрддрдо рдмрд┐рдЯ рдкрд░ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
  2. рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде - рдЬреЛ рдЪрд┐рддреНрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рд╕рдВрдкреАрдбрд╝рди рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ, рдЫрд╡рд┐ рдХреЛ Ycbrrette рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

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

    cY = 0.30078125 * R + 0.5859375 * G + 0.11328125 * B

    cCb = -0.171875 * R - 0.33984375 * G + 0.51171875 * B + 128

    cCr = 0.51171875 * R - 0.4296875 * G - 0.08203125 * B + 128




рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдЪрд┐рддреНрд░ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ -

рдЫрд╡рд┐

рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

183 960 - рдореВрд▓ PNG рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░

155 932 - рдПрд╕рдПрд╕рдкреА (рд╕рдВрдкреАрдбрд╝рди рдореЗрдВ 0.2 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ)

122 593 - рдПрд╕рдПрд╕рдкреА (рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде, рдиреБрдХрд╕рд╛рди)



рдЕрдЧрд▓реА рдЫрд╡рд┐ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдХреЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

www.libpng.org/pub/png/img_png/16million-pschmidt.png

59852 - рдкреАрдПрдирдЬреА

1428 - рдПрд╕рдПрд╕рдкреА



рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рд╣реИрдВ:

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

    I = 4 рд╕реЗ рдпреВрдмрд╛рдЙрдВрдб ( рдмрд╛рдЗрдЯрдЕрд░реЗ ) рдЪрд░рдг 4 <br/>

    рдЖрд░ = рдмрд╛рдЗрдЯрдЕрд░реЗ ( i + 0 ) <br/>

    g = рдмрд╛рдЗрдЯрдЕрд░реЗ ( i + 1 ) <br/>

    b = рдмрд╛рдЗрдЯрдЕрд░реЗ ( i + 2 ) <br/>

    рдпрджрд┐ рдирд╣реАрдВ ( lR = R рдФрд░ Lg = g рдФрд░ lB = b ) рдпрд╛ ( Cnt> = MAX_ITERATE ) рддрдм <br/>

    рдпрджрд┐ Cnt = MAX_ITERATE рддреЛ Cnt = 0 <br/>

    рдмрд╛рдЗрдЯрдЕрд░реЗ ( рдкреЙрд╕ + 0 ) = рдПрд▓рдЖрд░ <br/>

    рдмрд╛рдЗрдЯрдЕрд░реЗ ( рдкреЙрдЬрд╝ + 1 ) = рдПрд▓рдЬреА <br/>

    рдмрд╛рдЗрдЯрдЕрд░реЗ ( рдкреЙрд╕ 2 ) = рдПрд▓рдмреА <br/>

    рдмрд╛рдЗрдЯрдЕрд░реЗ ( рдкреЙрд╕ 3 ) = Cnt <br/>

    lR = R <br/>

    Lg = g <br/>

    lB = b <br/>

    pos = pos + 4 <br/>

    Cnt = 1 <br/>

    рдПрд▓реНрд╕ <br/>

    Cnt = Cnt + 1 <br/>

    рдЕрдВрдд рдЕрдЧрд░ <br/>

    рдЕрдЧрд▓рд╛
  5. рдмреАрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЛрдбрд┐рдВрдЧ (рдмрд░реЛрдЬрд╝-рд╡реНрд╣реАрд▓рд░ рдкрд░рд┐рд╡рд░реНрддрди), рдЕрд░реНрдерд╛рддреН - рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - рдЖрд░реНрдХрди, рд▓реЗрдЦрдХ - рджрд┐рдорд┐рддреНрд░реА рдорд╛рд▓рд┐рд╢реЗрд╡;
  6. рдЕрдЧрд▓рд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдп рдЖрддрд╛ рд╣реИ, рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯ рдХреЛ рд╣рдЯрд╛рдХрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдЗрдЯ рдФрд░ рдЙрди рдкрджреЛрдВ рдХреЗ рдПрдХ рдмрд┐рдЯрдореИрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬрд╣рд╛рдВ рд╕реЗ рдпрд╣ рдмрд╛рдЗрдЯ рд╣рдЯрд╛ рджреА рдЧрдИ рдереАред рдпрд╣ рдЪрд░рдг 3 рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдореВрд▓реНрдп);


    рдбрд┐рдо рдореИрдВ рдЬрдм рддрдХ

    рдбрд┐рдо iCnt рд▓реЙрдиреНрдЧ

    рдбрд┐рдо рд╕рд╛рдЗрдЬрд╝рд╕реНрдЯреНрд░реАрдо ( ) рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ

    рдбрд┐рдо рдиреНрдпреВрд╕реНрдЯреНрд░реАрдо ( ) рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ

    рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдордВрдж рдЖрдХрд╛рд░

    рдбрд┐рдо SizeLengthReal рд▓рдВрдмреЗ рд╕рдордп рддрдХ

    рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдордВрджрддрд╛

    рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдирдИ NewLengthReal

    рдбрд┐рдо рдмрд┐рдЯрдкреЛрд╕ рд▓реЙрдиреНрдЧ

    рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЖрдХрд╛рд░

    рдбрд┐рдо рдлреНрд░реАрдХ ( 255 ) рдЕрд╕ рд▓реЙрдиреНрдЧ

    рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдо рдлреНрд░реАрдХрд░

    рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдо рдлреНрд░реАрдХрд╛рдЙрдВрдЯ

    рдЬрдм рддрдХ рдордВрдж рджрд╣реА

    рдЬрдм рддрдХ рдирдИ рдЧрд┐рдирддреА рдордВрдж

    рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдбрд┐рдо рдПрдбрдЪрд░

    рдбрд┐рдо рдкрд┐рдЫрд▓реЗ рдЪрд╛рд░ рдЬрдм рддрдХ

    рдбрд┐рдо рдмрд┐рдЯрдСрд░ ( 7 ) рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ



    рдЖрдХрд╛рд░ = UBound ( bts ) + 1



    SizeLengthReal = 1024

    ReDim SizeStream ( SizeLengthReal )



    NewLengthReal = 1024

    ReDim NewStream ( NewLengthReal )



    I = 0 рд╕реЗ 7 рдХреЗ рд▓рд┐рдП

    BitOr ( i ) = ( 2 ^ i )

    рдЕрдЧрд▓рд╛



    I = 0 рд╕реЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП - 1

    рдХрд░рдЪрд░ = рдмреАрдЯреАрдПрд╕ ( рдЖрдИ )

    рдлрд╝реНрд░реАрдХ ( рдХрд░рдЫрд╛рд░ ) = рдлрд╝реНрд░реАрдХ ( рдХрд░реНрдХрд░ ) + рез

    рдЕрдЧрд▓рд╛



    I = 0 рд╕реЗ 255 рдХреЗ рд▓рд┐рдП

    рдЕрдЧрд░ рдлреНрд░реАрдХ ( i ) > рдлреНрд░реАрдХрд╛рдЙрдВрдЯ рддрдм

    FreqCount = рдлрд╝реНрд░реАрдХ ( i )

    рдлреНрд░реАрдЪрдХреНрд░ = рдЖрдИ

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ

    рдЕрдЧрд▓рд╛



    I = 0 рд╕реЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП - 1



    рдХрд░рдЪрд░ = рдмреАрдЯреАрдПрд╕ ( рдЖрдИ )



    рдЕрдЧрд░ ( рдХрд░рдЪрд╣рд░ <> рдлреНрд░реАрдЪрд╛рд░реНрдЬ ) рддрдм

    AddChar = AddChar рдпрд╛ BitOr ( BitPos )

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ



    рдмрд┐рдЯрдкреЛрд╕ = рдмрд┐рдЯрдкреЛрд╕ + рез

    рдЕрдЧрд░ рдмрд┐рдЯрдкреЛрд╕ = 8 рддреЛ

    SizeStream ( SizeLength ) = AddChar

    рдпрджрд┐ SizeLength + 10 > SizeLengthReal рддрдм

    SizeLengthReal = SizeLengthReal * 2

    ReDim рдкрд░рд┐рд░рдХреНрд╖рдг SizeStream ( SizeLengthReal )

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ

    SizeLength = SizeLength + 1

    рдмрд┐рдЯрдкреЛрд╕ = реж

    AddChar = 0

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ



    рдЕрдЧрд░ ( рдХрд░рдЪрд╣рд░ <> рдлреНрд░реАрдЪрд╛рд░реНрдЬ ) рддрдм

    NewStream ( NewLength ) = рдХрд░рдЪрд░

    рдпрджрд┐ NewLength + 10 > NewLengthReal рддрдм

    NewLengthReal = NewLengthReal * 2

    ReDim рд╕рдВрд░рдХреНрд╖рд┐рдд NewStream ( NewLengthReal )

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ

    NewLength = NewLength + 1

    рдпрджрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ

    рдЕрдВрддрд┐рдо рдХрдЪрд░ = рдХрд░рдЫрд░



    рдЕрдЧрд▓рд╛



    '***

    'рдЕрдЧрд░ AddChar <> 0 рддреЛ

    SizeStream ( SizeLength ) = AddChar

    SizeLength = SizeLength + 1

    'рдПрдВрдб рдЗрдл



    ReDim рд╕рдВрд░рдХреНрд╖рд┐рдд рдмреАрдЯреАрдПрд╕ ( ( SizeLength + NewLength + 4 + 1 + 4 ) )



    рдХреЙрд▓ рдХреЙрдкреАрдореЗрд░реА ( bts ( 0 ) , FreqChar, 1 )

    CallMemory ( bts ( 1 ) , рдЖрдХрд╛рд░, 4 ) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ

    CallMemory ( bts ( 5 ) , SizeLength, 4 ) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ

    CallMemory ( bts ( 9 ) , SizeStream ( 0 ) , SizeLength ) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ

    рдХреЙрд▓ рдХреЙрдкреАрдореЗрд░реА ( bts ( 9 + SizeLength ) , NewStream ( 0 ) , NewLength )



    рдорд┐рдЯрд╛ рдЖрдХрд╛рд░, рдиреНрдпреВрд╕реНрдЯреНрд░реАрдо

  7. рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЛ рдХрд┐рд╕реА рднреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рд╣рдлрд╝рдореИрди, рдЕрдВрдХрдЧрдгрд┐рдд, рдЬрд╝рд┐рдк) рдХреЗ рд╕рд╛рде рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд▓рдЬрд╝рдорд╛ рдХреЛ рд╕реЗрдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рдЖрдк рдпрд╣рд╛рдВ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрд░реЗрд╕рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - http://www.sendspace.com/file/nv2suu



рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдмреНрдмреЗ рдореЗрдВ Jpeg рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА Jpeg2000 рдЬреИрд╕реЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рддрд░рдВрдЧ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднреА рд╣реЛрддрд╛ рд╣реИред



All Articles