精华内容
下载资源
问答
  • HEVC Tile 编码器-kvazaar

    千次阅读 2020-05-11 20:27:55
    一、项目介绍 Kvazaar是屡获殊荣的学术性开源HEVC编码器,它是... 相比于x265,使用上面感觉快很多,而且支持设置tile的参数进行编码。 项目地址: http://ultravideo.cs.tut.fi/ https://github.com/ultravideo..

    一、项目介绍

        Kvazaar是屡获殊荣的学术性开源HEVC编码器,它是用C语言从零开始开发的。Kvazaar目标是设计一种模块化,便携式HEVC编码器,以最佳的编码速度和资源获得高编码效率。
    可以从GitHub下载Kvazaar源代码和二进制文件,也可以通过FFmpeg或Libav使用它。 相比于x265,使用上面感觉快很多,而且支持设置tile的参数进行编码。
    项目地址:
    编译好的各个平台的可执行文件:
     

    二、命令行

        简单的一个例子: 
     
        将一个输入的MP4 hevc编码的文件 编码成 将motion vectors 限制在一个tile里面的hevc码流:
        kvazaar -i input.mp4 --input-res 3840x2160 -o output.hvc --tiles 3x3 --slices tiles --mv-constraint frametilemargin -q 30 --period 30 --input-fps 30
     
        将一个yuv编码成有tile的bin:
    kvazaar -i 8k.yuv --input-res 8192x4096 -o output.hvc --tiles 3x3
     

    三、VS 平台编译

    1、首先下载vsyasm
       
    按照要求下载:64为下载的是 http://yasm.tortall.net/Download.html
    下载好之后解压 将vsyasm.exe的路径添加到系统的环境变量path里面。否则会出现 vsyasm找不到的错误。
     
    2、编译
        打开kvazaar\build\kvazaar_VS2015.sln 就可以编译调试了。
     
    3、编译过程出现错误:
     

        LINK : fatal error LNK1181: cannot open input file 'Win32-Debug\picture-x86-asm-sad.obj

    出现这个错误一般都是yasm的版本不对了。这边用的cygwin下面的vsyasm,这个之前编译vp9的时候改过,是yasm更名的,导致编译错误。

    重新到yasm的网站下面下载一个新的vsyasm,加到到环境变量里面。 重新启动一下vs 2017 就可以编译成功了。

     

     

    完整的命令选项

    Usage:
    kvazaar -i <input> --input-res <width>x<height> -o <output>
    
    
    Required:
     -i, --input <filename>     : Input file   
         --input-res <res>      : Input resolution [auto]
                                      - auto: Detect from file name.
                                      - <int>x<int>: width times height
     -o, --output <filename>    : Output file
    
    
    Presets:
         --preset <preset>      : Set options to a preset [medium]
                                      - ultrafast, superfast, veryfast, faster,
                                        fast, medium, slow, slower, veryslow
                                        placebo
    
    
    Input:
     -n, --frames <integer>     : Number of frames to code [all]
         --seek <integer>       : First frame to code [0]
         --input-fps <num>[/<denom>] : Frame rate of the input video [25]
         --source-scan-type <string> : Source scan type [progressive]
                                      - progressive: Progressive scan
                                      - tff: Top field first
                                      - bff: Bottom field first
         --input-format <string> : P420 or P400 [P420]
         --input-bitdepth <int> : 8-16 [8]
         --loop-input           : Re-read input file forever.
    
    
    Options:
         --help                 : Print this help message and exit.
         --version              : Print version information and exit.
         --(no-)aud             : Use access unit delimiters. [disabled]
         --debug <filename>     : Output internal reconstruction.
         --(no-)cpuid           : Enable runtime CPU optimizations. [enabled]
         --hash <string>        : Decoded picture hash [checksum]
                                      - none: 0 bytes
                                      - checksum: 18 bytes
                                      - md5: 56 bytes
         --(no-)psnr            : Calculate PSNR for frames. [enabled]
         --(no-)info            : Add encoder info SEI. [enabled]
         --crypto <string>      : Selective encryption. Crypto support must be
                                  enabled at compile-time. Can be 'on' or 'off' or
                                  a list of features separated with a '+'. [off]
                                      - on: Enable all encryption features.
                                      - off: Disable selective encryption.
                                      - mvs: Motion vector magnitudes.
                                      - mv_signs: Motion vector signs.
                                      - trans_coeffs: Coefficient magnitudes.
                                      - trans_coeff_signs: Coefficient signs.
                                      - intra_pred_modes: Intra prediction modes.
         --key <string>         : Encryption key [16,213,27,56,255,127,242,112,
                                                  97,126,197,204,25,59,38,30]
    
    
    Video structure:
     -q, --qp <integer>         : Quantization parameter [22]
     -p, --period <integer>     : Period of intra pictures [64]
                                      - 0: Only first picture is intra.
                                      - 1: All pictures are intra.
                                      - N: Every Nth picture is intra.
         --vps-period <integer> : How often the video parameter set is re-sent [0]
                                      - 0: Only send VPS with the first frame.
                                      - N: Send VPS with every Nth intra frame.
     -r, --ref <integer>        : Number of reference frames, in range 1..15 [4]
         --gop <string>         : GOP structure [lp-g4d3t1]
                                      -  0: Disabled
                                      -  8: B-frame pyramid of length 8
                                      - 16: B-frame pyramid of length 16
                                      - lp-<string>: Low-delay P/B-frame GOP
                                        (e.g. lp-g8d4t2, see README)
         --intra-qp-offset <int>: QP offset for intra frames [-51..51] [auto]
                                      - N: Set QP offset to N.
                                      - auto: Select offset automatically based
                                        on GOP length.
         --(no-)open-gop        : Use open GOP configuration. [enabled]
         --cqmfile <filename>   : Read custom quantization matrices from a file.
         --scaling-list <string>: Set scaling list mode. [off]
                                      - off: Disable scaling lists.
                                      - custom: use custom list (with --cqmfile).
                                      - default: Use default lists.
         --bitrate <integer>    : Target bitrate [0]
                                      - 0: Disable rate control.
                                      - N: Target N bits per second.
         --rc-algorithm <string>: Select used rc-algorithm. [lambda]
                                      - lambda: rate control from:
                                        DOI: 10.1109/TIP.2014.2336550
                                      - oba: DOI: 10.1109/TCSVT.2016.2589878
         --(no-)intra-bits      : Use Hadamard cost based allocation for intra
                                  frames. Default on for gop 8 and off for lp-gop
         --(no-)clip-neighbour  : On oba based rate control whether to clip
                                  lambda values to same frame's ctus or previous'.
                                  Default on for RA GOPS and disabled for LP.
         --(no-)lossless        : Use lossless coding. [disabled]
         --mv-constraint <string> : Constrain movement vectors. [none]
                                      - none: No constraint
                                      - frametile: Constrain within the tile.
                                      - frametilemargin: Constrain even more.
         --roi <filename>       : Use a delta QP map for region of interest.
                                  Reads an array of delta QP values from a text
                                  file. The file format is: width and height of
                                  the QP delta map followed by width*height delta
                                  QP values in raster order. The map can be of any
                                  size and will be scaled to the video size.
         --set-qp-in-cu         : Set QP at CU level keeping pic_init_qp_minus26.
                                  in PPS and slice_qp_delta in slize header zero.
         --(no-)erp-aqp         : Use adaptive QP for 360 degree video with
                                  equirectangular projection. [disabled]
         --level <number>       : Use the given HEVC level in the output and give
                                  an error if level limits are exceeded. [6.2]
                                      - 1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6,
                                        6.1, 6.2
         --force-level <number> : Same as --level but warnings instead of errors.
         --high-tier            : Used with --level. Use high tier bitrate limits
                                  instead of the main tier limits during encoding.
                                  High tier requires level 4 or higher.
         --(no-)vaq <integer>   : Enable variance adaptive quantization with given
                                  strength, in range 1..20. Recommended: 5.
                                  [disabled]
    
    
    Compression tools:
         --(no-)deblock <beta:tc> : Deblocking filter. [0:0]
                                      - beta: Between -6 and 6
                                      - tc: Between -6 and 6
         --sao <string>         : Sample Adaptive Offset [full]
                                      - off: SAO disabled
                                      - band: Band offset only
                                      - edge: Edge offset only
                                      - full: Full SAO
         --(no-)rdoq            : Rate-distortion optimized quantization [enabled]
         --(no-)rdoq-skip       : Skip RDOQ for 4x4 blocks. [disabled]
         --(no-)signhide        : Sign hiding [disabled]
         --(no-)smp             : Symmetric motion partition [disabled]
         --(no-)amp             : Asymmetric motion partition [disabled]
         --rd <integer>         : Intra mode search complexity [0]
                                      - 0: Skip intra if inter is good enough.
                                      - 1: Rough intra mode search with SATD.
                                      - 2: Refine intra mode search with SSE.
                                      - 3: Try all intra modes and enable intra
                                           chroma mode search.
         --(no-)mv-rdo          : Rate-distortion optimized motion vector costs
                                  [disabled]
         --(no-)zero-coeff-rdo  : If a CU is set inter, check if forcing zero
                                  residual improves the RD cost. [enabled]
         --(no-)full-intra-search : Try all intra modes during rough search.
                                  [disabled]
         --(no-)transform-skip  : Try transform skip [disabled]
         --me <string>          : Integer motion estimation algorithm [hexbs]
                                      - hexbs: Hexagon Based Search
                                      - tz:    Test Zone Search
                                      - full:  Full Search
                                      - full8, full16, full32, full64
                                      - dia:   Diamond Search
         --me-steps <integer>   : Motion estimation search step limit. Only
                                  affects 'hexbs' and 'dia'. [-1]
         --subme <integer>      : Fractional pixel motion estimation level [4]
                                      - 0: Integer motion estimation only
                                      - 1: + 1/2-pixel horizontal and vertical
                                      - 2: + 1/2-pixel diagonal
                                      - 3: + 1/4-pixel horizontal and vertical
                                      - 4: + 1/4-pixel diagonal
         --pu-depth-inter <int>-<int> : Inter prediction units sizes [0-3]
                                      - 0, 1, 2, 3: from 64x64 to 8x8
                                      - Accepts a list of values separated by ','
                                        for setting separate depths per GOP layer
                                        (values can be omitted to use the first
                                        value for the respective layer).
         --pu-depth-intra <int>-<int> : Intra prediction units sizes [1-4]
                                      - 0, 1, 2, 3, 4: from 64x64 to 4x4
                                      - Accepts a list of values separated by ','
                                        for setting separate depths per GOP layer
                                        (values can be omitted to use the first
                                        value for the respective layer).
         --ml-pu-depth-intra    : Predict the pu-depth-intra using machine
                                   learning trees, overrides the
                                   --pu-depth-intra parameter. [disabled]
         --tr-depth-intra <int> : Transform split depth for intra blocks [0]
         --(no-)bipred          : Bi-prediction [disabled]
         --cu-split-termination <string> : CU split search termination [zero]
                                      - off: Don't terminate early.
                                      - zero: Terminate when residual is zero.
         --me-early-termination <string> : Motion estimation termination [on]
                                      - off: Don't terminate early.
                                      - on: Terminate early.
                                      - sensitive: Terminate even earlier.
         --fast-residual-cost <int> : Skip CABAC cost for residual coefficients
                                      when QP is below the limit. [0]
         --(no-)intra-rdo-et    : Check intra modes in rdo stage only until
                                  a zero coefficient CU is found. [disabled]
         --(no-)early-skip      : Try to find skip cu from merge candidates.
                                  Perform no further search if skip is found.
                                  For rd=0..1: Try the first candidate.
                                  For rd=2.. : Try the best candidate based
                                               on luma satd cost. [enabled]
         --max-merge <integer>  : Maximum number of merge candidates, 1..5 [5]
         --(no-)implicit-rdpcm  : Implicit residual DPCM. Currently only supported
                                  with lossless coding. [disabled]
         --(no-)tmvp            : Temporal motion vector prediction [enabled]
    
    
    Parallel processing:
         --threads <integer>    : Number of threads to use [auto]
                                      - 0: Process everything with main thread.
                                      - N: Use N threads for encoding.
                                      - auto: Select automatically.
         --owf <integer>        : Frame-level parallelism [auto]
                                      - N: Process N+1 frames at a time.
                                      - auto: Select automatically.
         --(no-)wpp             : Wavefront parallel processing. [enabled]
                                  Enabling tiles automatically disables WPP.
                                  To enable WPP with tiles, re-enable it after
                                  enabling tiles. Enabling wpp with tiles is,
                                  however, an experimental feature since it is
                                  not supported in any HEVC profile.
         --tiles <int>x<int>    : Split picture into width x height uniform tiles.
         --tiles-width-split <string>|u<int> :
                                      - <string>: A comma-separated list of tile
                                                  column pixel coordinates.
                                      - u<int>: Number of tile columns of uniform
                                                width.
         --tiles-height-split <string>|u<int> :
                                      - <string>: A comma-separated list of tile row
                                                  column pixel coordinates.
                                      - u<int>: Number of tile rows of uniform
                                                height.
         --slices <string>      : Control how slices are used.
                                      - tiles: Put tiles in independent slices.
                                      - wpp: Put rows in dependent slices.
                                      - tiles+wpp: Do both.
         --partial-coding <x-offset>!<y-offset>!<slice-width>!<slice-height>
                                : Encode partial frame.
                                  Parts must be merged to form a valid bitstream.
                                  X and Y are CTU offsets.
                                  Slice width and height must be divisible by CTU
                                  in pixels unless it is the last CTU row/column.
                                  This parameter is used by kvaShare.
    
    
    Video Usability Information:
         --sar <width:height>   : Specify sample aspect ratio
         --overscan <string>    : Specify crop overscan setting [undef]
                                      - undef, show, crop
         --videoformat <string> : Specify video format [undef]
                                      - undef, component, pal, ntsc, secam, mac
         --range <string>       : Specify color range [tv]
                                      - tv, pc
         --colorprim <string>   : Specify color primaries [undef]
                                      - undef, bt709, bt470m, bt470bg,
                                        smpte170m, smpte240m, film, bt2020
         --transfer <string>    : Specify transfer characteristics [undef]
                                      - undef, bt709, bt470m, bt470bg,
                                        smpte170m, smpte240m, linear, log100,
                                        log316, iec61966-2-4, bt1361e,
                                        iec61966-2-1, bt2020-10, bt2020-12
         --colormatrix <string> : Specify color matrix setting [undef]
                                      - undef, bt709, fcc, bt470bg, smpte170m,
                                        smpte240m, GBR, YCgCo, bt2020nc, bt2020c
         --chromaloc <integer>  : Specify chroma sample location (0 to 5) [0]
    
    

     

     

     
     
    展开全文
  • HEVC编码结构:Slice和Tile

    千次阅读 2016-10-07 11:32:05
    HEVC编码结构中的Slice、Tile结构概念及两者关系

    1、Slice片段层

    一幅图像可以被划分为一个或多个片或称为条带(Slice),每个片的数据编码都是独立的。

    如下图,一幅图像被划分为N个Slice,Slice成条带形。在编码时,每一个Slice中的CTU按光栅扫描顺序进行编码。


    Slice头信息无法通过前一个Slice的头信息推断得到,这就要求Slice不能跨过它的边界来进行帧内或帧间预测,但环路滤波器可以跨越Slice进行滤波。使用Slice的主要目的是当数据丢失后能再次保证解码同步。


    根据编码类型,Slice可以分为:

    (1)I Slice:该Slice中所有CU的编码过程都使用帧内预测。

    (2)P Slice:在I Slice的基础上,该Slice中的CU还可以使用帧间预测,每个预测块(PB)使用至多一个运动补偿预测信息。P Slice只使用图像参考列表list0。

    (3)B Slice:在P Slice的基础上,B Slice中的CU也可以使用帧间预测,但是每个PB可以使用至多两个运动补偿预测信息。B Slice可以使用图像参考列表list 0和list 1。


    一个独立的Slice可以进一步划分为若干个条带片段Slice segment(SS),包括一个独立SS和若干个依赖SS。

    如图Slice以独立SS作为开始,一个SS包含整数个CTU(至少一个)。预测过程不可以跨越Slice边界,但是可以跨越依赖SS边界,一个Slice中的SS之间可以相互参考。




    2、Tile单元

    在HEVC中一幅图像可以划分为若干个Tile(这是相比AVC的优化改进),即从从水平和垂直方向将图像分割为若干个矩形区域,把这些矩形区域称为Tile。

    下图是一种划分的示例,划分的Tile并不要求均匀分布,整幅图像被划分为9个Tile,每个Tile都是矩形。通常每个Tile包含的CTU数据近似相等。


    每个Tile包含整数个CTU,其可以独立编码,在编码时,每一个Tile包含的CTU按照扫描顺序进行编码。划分Tile的主要目的是增强并行处理能力而不引入新的错误扩散。



    3、Slice与Tile的关系

    一幅图像可以被划分为若干个Slice,也可以划分为若干个Tile,两者划分的目的都是为了进行独立编码。某些Slice中可以包含多个Tile,同样某些Tile中也可以包含多个Slice。Tile包含的CTU个数和Slice中的CTU个数互不影响。


    不同点:

    划分方式:Tile为矩形,Slice为条带形。

    组成结构:Slice由一系列的SS组成,一个SS由一系列的CTU组成。而Tile直接由一系列CTU组成。


    Slice/SS和Tile要遵循的一些基本原则,每个Slice/SS和Tile之间至少满足以下两个条件之一:

    (1)一个Slice/SS中的所有CTU属于同一个Tile。

    例如下图中一幅图像的每一个Slice的所有CTU都属于同一个Tile。


    (2)一个Tile中所有CTU属于同一个Slice/SS。

    如下图,一幅图像在垂直方向被划分为三个Tile,这三个Tile中各自的所有CTU都属于同一个Slice。



    展开全文
  • 基于Tile Coding编码和模型学习的Actor-Critic算法,有较好的性能
  • TileMap 导出的 .Tmx 文件记录了地图所有信息,其中编辑好的图块信息会存放在每个图层的 Data 节点下。以下是一个 10x10 的图层,可以看到,Data 节点记录了每个图块对应到图集的索引,索引从 1 开始递增,一切都很...

    图集
    596122-20190620111958453-714306991.png

    地图
    596122-20190620112006480-1805961271.png

    TileMap 导出的 .Tmx 文件记录了地图所有信息,其中编辑好的图块信息会存放在每个图层的 Data 节点下。以下是一个 10x10 的图层,可以看到,Data 节点记录了每个图块对应到图集的索引,索引从 1 开始递增,一切都很好理解。

     <layer id="1" name="块层 1" width="10" height="10">
      <data encoding="csv">
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1
    </data>
     </layer>

    但是,TileMap 的图块是可以由 垂直翻转,水平翻转,旋转90度,旋转180度,旋转270度 这些操作组合运算,这些信息也会存储到对应的图块信息里,也就是 Data 节点中。下面是对 索引1 进行全部可能的运算后得到的数据,总共16条,为便于查看以二进制显示,可以很容易发现,数据采用了 32bit 整数存储,索引不变的情况下,只有 前3bit 发生了变化,可见 前3bit 用于记录运算信息,其余位(也就是剩下的29bit)用于存储索引。

    000000000000000000000000‭00000001‬          0
    ‭01100000000000000000000000000001‬          逆时针90
    ‭11000000000000000000000000000001‬          逆时针180
    ‭10100000000000000000000000000001‬          逆时针270
    
    ‭10000000000000000000000000000001‬          垂直翻转
    ‭00100000000000000000000000000001‬          垂直翻转+逆时针90
    ‭01000000000000000000000000000001‬          垂直翻转+逆时针180
    ‭11100000000000000000000000000001‬          垂直翻转+逆时针270
    
    ‭01000000000000000000000000000001‬          水平翻转
    ‭11100000000000000000000000000001‬          水平翻转+逆时针90
    ‭10000000000000000000000000000001‬          水平翻转+逆时针180
    ‭00100000000000000000000000000001‬          水平翻转+逆时针270
    
    10100000000000000000000000000001          垂直翻转+水平翻转+逆时针90
    00000000000000000000000000000001          垂直翻转+水平翻转+逆时针180
    01100000000000000000000000000001          垂直翻转+水平翻转+逆时针270
    
    ‭11000000000000000000000000000001‬          垂直翻转+水平翻转

    接下来就是分析 前3bit 的生成规则。首先,3bit 仅能存下8个不同数字:000,001,010,011,100,101,110,111。也就是说,按这个格式,只能存下8种运算组合。
    再仔细看上面列表,其实每一条运算都会有一条重复的,把重复的运算剔除掉,就刚好只剩下8种组合。

    000000000000000000000000‭00000001‬          0
    000000000000000000000000‭00000001‬          垂直翻转+水平翻转+逆时针180
    
    01100000000000000000000000000001          逆时针90
    01100000000000000000000000000001          垂直翻转+水平翻转+逆时针270
    
    
    ‭11000000000000000000000000000001‬          逆时针180
    ‭11000000000000000000000000000001‬          垂直翻转+水平翻转
    
    ‭10100000000000000000000000000001‬          逆时针270
    ‭10100000000000000000000000000001‬          垂直翻转+水平翻转+逆时针90
    
    ‭10000000000000000000000000000001‬          垂直翻转
    ‭10000000000000000000000000000001‬          水平翻转+逆时针180
    
    ‭00100000000000000000000000000001‬          垂直翻转+逆时针90
    ‭00100000000000000000000000000001‬          水平翻转+逆时针270
    
    ‭01000000000000000000000000000001‬          垂直翻转+逆时针180
    ‭01000000000000000000000000000001‬          水平翻转
    
    ‭11100000000000000000000000000001‬          垂直翻转+逆时针270
    ‭11100000000000000000000000000001‬          水平翻转+逆时针90
    
    //  剔除重复运算之后
    000000000000000000000000‭00000001‬          0
    ‭00100000000000000000000000000001‬          垂直翻转+逆时针90
    ‭01000000000000000000000000000001‬          水平翻转
    01100000000000000000000000000001          逆时针90
    ‭10000000000000000000000000000001‬          垂直翻转
    ‭10100000000000000000000000000001‬          垂直翻转+水平翻转+逆时针90
    ‭11000000000000000000000000000001‬          垂直翻转+水平翻转
    ‭11100000000000000000000000000001‬          水平翻转+逆时针90

    推测方式比较原始,好在数据并不太多,比较容易推测出来。

    在这之前,有想到过一些运算是重复的,却没想到可以紧凑到只要 3bit 就可以塞下这所有的运算组合。

    转载于:https://www.cnblogs.com/mmc1206x/p/10847539.html

    展开全文
  • 量化网格 是用于地形图块的Python编码器/解码器和拓扑生成器。 Doc托管在Readthedocs上: ://quantized-mesh-tile.readthedocs.io/en/latest/
  • GOOLE卫星地图(GE)是我常玩的一个工具,深深为其魅力所...t=trtqtt,其中t参数编码了图像的位置,t长度表明zoom的级别。 要想看到全球,设置t为t;下一显示级别,Tile被分成4个象限,顺时针依次是:q,r,s和t;要想看...
    GOOLE卫星地图(GE)是我常玩的一个工具,深深为其魅力所吸引,后来在网上搜索有关GE卫星地图图片的一些文章,发现的其调用的URL格式为:http://kh0.google.com/kh?n=404&v=8&t=trtqtt,其中t参数编码了图像的位置,t长度表明zoom的级别。 要想看到全球,设置t为t;下一显示级别,Tile被分成4个象限,顺时针依次是:q,r,s和t;要想看哪个象限,就把这个字符附到t的后面就可以了。例如:t=tq,代表左上的象限,依次类推,q,r,s和t可用下图来表示其意义:

    其Tile位置编码算法如下:
    FUNCTION getGMurl(uZoom as Integer,lat as Integer,lon as Integer)
    PI = 3.1415926535897
    x=(180.0 + lon)/360.0
    y=-(lat)*PI/180
    y=0.5*log((1+sin(y))/(1-sin(y)))
    y =y*1.0/(2*PI)
    y =y+ 0.5
    tid="t"
    lookup="qrts"
    FOR i=uZoom TO 1 STEP -1
    x =x-floor(x)
    y =y-floor(y)
    quad=quad+substr(lookup,IIF(x>=0.5,2,1)+iif(y>=0.5,2,0),1)
    x=x*2
    y=y*2
    endf
    RETURN 'http://kh0.google.com/kh?n=404&v='+ALLTRIM(STR(uZoom))+'&t=t'+tid
    ENDFUNC

    这个算法也可以变形为如下写法:
    FUNCTION getGEurl(uZoom as Integer,lat as Integer,lon as Integer)
    *参数:uZoom-放大倍数,lal-纬度4,lon-经度
    *注意:uZoom值一般在1-18之间,但不一定能达到18倍,甚至更低的倍数。
    *返回值:GE地图的图片地址,字符型。
    STORE 0xB4 TO wx,wy
    STORE 0x00 TO cx,cy
    tid=''
    FOR i=1 TO uZoom-1
    DO CASE
       CASE (lat>=cx) and (lon>=cy)
             tid=tid+'r'
             cx=cx+wx/2
             cy=cy+wy/2
       CASE (lat>=cx) and (lon<cy)
             tid=tid+'s'
             cx=cx+wx/2
             cy=cy-wy/2
       CASE (lat<cx) and (lon<cy)
            tid=tid+'t'
            cx=cx-wx/2
            cy=cy-wy/2
       OTHER
            tid=tid+'q'
            cx=cx-wx/2
            cy=cy+wy/2
    ENDC
    wx=wx/2
    wy=wy/2
    ENDF
    RETURN 'http://kh0.google.com/kh?n=404&v='+ALLT(STR(uZoom))+'&t=t'+tid
    ENDFUNC

    如要获得温州(34.262812,108.963207)的10倍卫星图的URL:
    getGEurl(10,34.262812,108.963207)
    结算结果为:http://kh3.google.com/kh?n=404&v=3&t=trstqrsts
    效果如下:

    这个算法是理论上的, 每个Tile是256×256的JPG或者PNG图片,如上图。 Google采用4个服务器平衡负载,它们是kh0, kh1, kh2 和 kh3。
    Google 地图使用了一个保护机制,以保证服务器的质量。如果一个IP的请求次数过多,它会被加到黑名单,并提示一个很友好的消息:
    We're sorry... ... but yourquery looks similar to automated requests from a computer virus orspyware application. To protect our users, we can't process yourrequest right now. We'll restore your access as quickly as possible, sotry again soon. In the meantime, if you suspect that your computer ornetwork has been infected, you might want to run a virus checker orspyware remover to make sure that your systems are free of viruses andother spurious software. We apologize for the inconvenience, and hopewe'll see you again on Google.
    呵呵,IP倍禁了!

     


    通过截取GE的数据后发现,后来发现还有很多可以获取更清晰卫星图片的途径,继续研究,呵呵!

    转载于:https://www.cnblogs.com/zany-hui/articles/2303145.html

    展开全文
  • 基于的地理编码器,支持可交换数据源。 这是实施的一些概念的。 依靠 节点v8.xx 安装 npm install Carmen不再附带任何默认数据或示例数据。 将来的版本中将提供样本数据。 原料药 有关使用carmen API的简化示例,...
  • rl_tile_encoding 用于增强学习Q值函数逼近的图块编码 该存储库使用CMAC切片作为线性函数近似值来实现TD(lambda)算法。 它还包括SARSA和Qlearning实施,已在山地车示例中进行了测试。 CMAC切片基于Sridhar ...
  • VE‾\overline{VE}VE) 7.2 随机梯度下降和半梯度下降 例7.1: 1000态随机行走的状态收敛 7.3 线性近似 7.4 线性方法的特征构造 7.4.1 Coarse Coding(粗编码) 例7.2:粗编码的粗度 7.4.2 Tile Coding(瓦片编码) ...
  • 瓷砖编码的描述—— 这是一种网格风格的瓦片编码的实现。 在这里,我们提供了一个程序“getTiles”,它映射真实的变量到瓷砖列表。 请参阅http://www.cs.umass.edu/~rich/tiles.html了解更多信息。 该代码基于 ...
  • 根据块矢量图块的Java编码器和解码器 编码矢量图块 VectorTileEncoder encoder = new VectorTileEncoder (); // Add one or more features with a layer name, a Map with attributes and a JTS Geometry. // The ...
  • [AV1] Frame and tile

    2020-10-18 16:54:02
    返回专栏目录 Frame and tile
  • 搜索看到利用Kvazaar对视频进行tile编码,然后利用mp4box进行dash。 学着操作了一下但是结果并不如模版,首先进行tile编码后的hvc视频就无法播放,感觉这里就已经卡住了。 有懂行的大神来救救我吗,那你能帮帮我吗...
  • HEVC标准中Tile块的划分实现要求

    千次阅读 2018-12-12 21:42:10
    Tile块的划分是可以在配置文件里开启,并且有选择均匀划分和非均匀划分两种。划分的Tile块大小:水平方至少...Tile的划分方式一经确定,貌似是对所编码的所有序列适用,不能再对某一帧的Tile划分方式做出改变. ...
  • DATE: 2021.6.14 文章目录1、低延时编码1.1 转码方面优化1.2 低延时软件编码器的优化1.3 针对RTC的Codec实现1.4 低延迟应用2、AV1技术生态2.1 AV1与云游戏 ...tile(AV1 only support tile), slice, slice_
  • 如下随便打开一个cfg文件,Slices和Tiles部分是设置多slice和多tile的一些参数 SliceMode和SliceArgument是两个配套参数 1.当SliceMode等于0时关闭帧内slice的划分 2.当SliceMode等于1时代表每个slice内最多包含...
  • slice,tile和并行化

    2021-06-27 15:15:59
    slice,tile 和并行化 slice slice 由整数个 CTU 组成,并且可以进行独立的编解码。这是通过在每个 slice 末尾终止 CABAC 码流和去除不同 slice 之间的 CTU 的依赖来实现的,但是多个 slice 头和去除不同 slice 的 ...
  • TMS服务和google tile瓦片组织方式

    千次阅读 2020-05-03 23:41:04
    TMS服务和google tile瓦片组织方式 tms
  • HEVC区域划分Slice Tile CTU CU PU TU

    千次阅读 2018-09-27 20:52:45
    Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测、残差信号重建和熵编码。一张图片可以分为一个活多个Slice。Slice包含一个或多个Slice segment。Slice可以不是长方形。 如图 上图包含两个...
  • 平铺地图导入器 这是一个插件,用于从导入TileMap和TileSet 。 注意:这仅与 Godot 3.0 或更高版本兼容。... 支持 Base64 编码的地图。 支持层压缩, zlib和gzip都支持。 对象模板。 正交、等距、交

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,319
精华内容 2,127
关键字:

编码tile