亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? err_diffusion.asm

?? ADI BF DSP的幾種常用的圖象濾波匯編優化后的代碼
?? ASM
字號:
/*******************************************************************************
Copyright(c) 2000 - 2002 Analog Devices. All Rights Reserved.
Developed by Joint Development Software Application Team, IPDC, Bangalore, India
for Blackfin DSPs  ( Micro Signal Architecture 1.0 specification).

By using this module you agree to the terms of the Analog Devices License
Agreement for DSP Software. 
********************************************************************************
Module Name     : err_diffusion.asm
Label name      : __err_diffusion
Version         :   1.3
Change History  :

                Version     Date          Author        Comments
                1.3         11/18/2002    Swarnalatha   Tested with VDSP++ 3.0
                                                        compiler 6.2.2 on 
                                                        ADSP-21535 Rev.0.2
                1.2         11/13/2002    Swarnalatha   Tested with VDSP++ 3.0
                                                        on ADSP-21535 Rev. 0.2
                1.1         01/28/2002    Raghavendra   Modified to match 
                                                        silicon cycle count
                1.0         07/11/2001    Raghavendra   Original 

Description     : This routine implements the Floyd-Steinberg error diffusion 
                  filter with binary output. Each pixel value is compared with 
                  threshold value defined by the user. Values that are larger 
                  than threshold are set to 255 and values that are less than or
                  equal to threshold are set to zero. The error value is the 
                  difference between the threshold and pixel value. Error is 
                  propagated to neighboring pixels using Floyed Steinberg 
                  filter.
                       Floyed Steinberg filter propagates fractions of the 
                  error value at pixel location
                  A to four of its neighboring pixels as shown below.
                     ----------------------
                     |      |   A |  7/16 |
                     ----------------------
                     | 3/16 | 5/16| 1/16  |
                     ----------------------
                  When a pixel is processed, it has already received error terms
                  from four neighboring pixels.

                  In this implementation an error buffer is used to accumulate 
                  errors that are propagated from the previous row. First time 
                  when the function is called error buffer is cleared and 
                  previous propagated value is passed next time. This process 
                  produces bilevel images with  visual appearance capturing the 
                  full range of detail and detail of the original image. This is
                  particularly effective in case the original image has a lot of
                  detail.
               
Algorithm       : Equivalent C program:

            void err_diffusion(unsigned char *in, int row ,int col,short * temp,
                        unsigned char *output,int thresh)
            {
                 int x,i,y,F;
                 int errA,errB,errC,errE,errF;

            for(y=0,i=0;y<row;y++)
                {
            errA=0; errE=0; errB=temp[0];
                                        // Initialize errors set to zero 
            for(x=0;x<col;x++,i++)
                    {
            errC=temp[x+1];
            F=in[i];                    // pixel value
            errF=F+((errE*7+errA +errB*5+errC*3)>>4);
            if(errF >thresh)            // check if error > threshold value
                output[i]=255;
            else
                output[i]=0;

            if(errF >thresh)
                temp[x]=errF=errF-255;
                            //  if pixel is > threshold subtract 255 from error
            else
                temp[x]=errF;

            errE=errF;      // propagate error for next pixel
            errA=errB;
            errB=errC;
                    }
                }
            }

Assumption      : 1. Input and  error_buffer are in different banks.
                  2. The size of error_buffer is COL+1

Prototype       : void _err_diffusion(unsigned char* in, int row, int col,
                               short * err_buf, unsigned char *out,int thresh );
               
                   in   ->  It is pointer to the input image.
                   row  ->  It is number of rows of input image.
                   col  ->  It is number of columns of input image.
              err_buf   ->  Buffer where one row error value is stored
                   out  ->  It is pointer the output buffer.
               thresh   ->  User specified threshold value

Registers used  : A0, A1, R0-R7, I1, I2, B1, B2, L1, L2, LC0, LC1.

Performance     : 
                Code Size    : 170 bytes

                Cycle count  : 834 cycles for 8x8 image
                Inner loop   : 12 * COL
                 Outer loop  : 3* row
*******************************************************************************/
.section         L1_code;
.global          __err_diffusion;
.align                8;
    
__err_diffusion:

    [--SP]=(R7:4,P5:4);
                            // Push R7-4,P5-3 
    R3=R2<<1||P4=[SP+40];   // Get Address of output array
    R3+=2;
    P5=R0;                  // Address of input array
    R7=[SP+44];             // Threshold value
    R0=[SP+36];             // Address of error_buffer
    SP+=-8;                 // Decrement stack to store coefficients
    I2=SP;  
    B2=SP;
    L2=8; 
    R6.L=3;                 // store 3,7,5,1 as coeff.
    W[I2++]=R6.L;
    R6.L=7;
    W[I2++]=R6.L;           
    I1=R0;                  // Address of error_buff
    B1=R0;
    L1=R3;                  // 2*Col+2
    R6.L=5;
    W[I2++]=R6.L;
    R6.L=1;
    R0=R1-R1(NS)||W[I2++]=R6.L;
                            // clear R0 
    P0=R1;                  // Number of rows
    P1=R2;                  // Number of columns
    R6=255;
    R1=R2-R2(NS)|| R0.H=W[I1++]|| R2=[I2++];
                            // fetch error_buff[0] and coeff. 7 & 3 
    LSETUP(ROW_ST,ROW_END)LC0=P0;
                            // loop count ==ROW 
ROW_ST: LSETUP(COL_ST,COL_END)LC1=P1;
                            // loop count ==COL 
COL_ST:     R5=R1-R1(NS)||R4=B[P5++](Z)||R1.L=W[I1--];
                            // clear R5, fetch input and  err_buff[x+1] 
            A1=R1.H*R2.H,A0=R1.L*R2.L(IS)||R3=[I2++];
                            // errE*7 , errC*3 and fetch 1and 5 
            R3=(A1+=R0.L*R3.H),R2=(A0+=R0.H*R3.L)(IS);
                            // errB*5 and 1*errA 
            R3=R3+R2(NS);   // add both results
            R3=R3>>>4;      // divide by 16
            R3=R3+R4(NS);   // Add with input
            CC=R3<=R7;
            IF !CC R5=R6;   // check if error <= threshold
            R2=R3-R6(NS)||B[P4++]=R5;
                            // store the output 
            IF !CC R3=R2;   // if false clear error
            R0=PACK(R1.L,R0.H)||W[I1]=R3.L||I1+=4;
                            // errA=errB, errB=errC 
COL_END:    R1=PACK(R3.L,R0.H)||R2=[I2++];
                            // errE=errF and fetch coeff. 7&3 
        R0.L=0;             // clear errA
ROW_END:
        R1.H=R2.L-R2.L(NS)||R0.H=W[I1++];
                            // clear errE  and fetch err_buff[0] 
    SP+=8;                  // increment stack pointer
    (R7:4,P5:4)=[SP++];     // Pop R7-4,P5-3
    RTS;
    NOP;                    // To avoid one stall if LINK or UNLINK happens to 
                            //be the  next instruction in the memory.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人夜色高潮福利影视| 久久99精品久久久| 日韩专区在线视频| 国产成人在线电影| 在线综合视频播放| 亚洲欧美aⅴ...| 国产乱人伦偷精品视频免下载| 91香蕉视频在线| 久久久欧美精品sm网站| 亚洲第一成年网| 99久久精品国产一区| 欧美精品一区二区久久久| 亚洲一区二区av电影| 成人午夜激情影院| 欧美成人精品高清在线播放| 亚洲精品你懂的| 丰满白嫩尤物一区二区| 日韩免费看网站| 日韩二区在线观看| 欧美年轻男男videosbes| 亚洲另类中文字| 成人av在线一区二区| 久久免费看少妇高潮| 久久精品国产精品亚洲红杏| 欧美日本不卡视频| 亚洲第一福利一区| 欧美网站一区二区| 亚洲综合偷拍欧美一区色| 99久久精品久久久久久清纯| 中文字幕二三区不卡| 国产精品18久久久久久久久久久久| 日韩视频免费观看高清在线视频| 亚洲成人动漫一区| 欧美日韩性生活| 亚洲 欧美综合在线网络| 91国偷自产一区二区三区成为亚洲经典 | 亚洲国产成人av网| 91热门视频在线观看| 综合久久给合久久狠狠狠97色| 成人综合婷婷国产精品久久蜜臀| 国产欧美一区二区三区在线老狼| 国产一区二区成人久久免费影院| 久久综合久久综合久久| 国产精品一区二区在线观看网站| 久久久精品免费免费| 高清国产一区二区| 国产精品久久久久久久久久久免费看 | 免费观看久久久4p| 欧美一区二区三区免费观看视频| 日韩电影一区二区三区| 欧美成人欧美edvon| 国产成人精品综合在线观看| 国产精品美女久久久久久久久久久| 风间由美一区二区三区在线观看 | 奇米一区二区三区| 精品福利视频一区二区三区| 国产成人精品亚洲777人妖 | 国产馆精品极品| 日韩美女久久久| 欧美日韩一区二区电影| 奇米综合一区二区三区精品视频| www国产成人| 91亚洲永久精品| 热久久免费视频| 国产欧美一二三区| 欧美亚洲免费在线一区| 久久精品免费观看| 中文字幕字幕中文在线中不卡视频| 欧美日韩综合不卡| 国产精品99久久久久久宅男| 伊人婷婷欧美激情| 精品国产一二三区| 色综合久久中文综合久久牛| 午夜精品福利一区二区三区av| 久久久久免费观看| 欧美色综合网站| 高清日韩电视剧大全免费| 亚洲国产一区二区三区青草影视| xfplay精品久久| 精品视频在线免费| 成人激情免费电影网址| 日本不卡123| 亚洲码国产岛国毛片在线| 精品欧美一区二区三区精品久久| 99久久综合99久久综合网站| 久久黄色级2电影| 亚洲成人自拍网| 国产精品久久久久久亚洲毛片| 日韩一级免费一区| 欧美在线一区二区三区| 成人a级免费电影| 久久97超碰国产精品超碰| 一区二区三区欧美日| 国产精品丝袜在线| 精品国产不卡一区二区三区| 欧美日韩不卡视频| 91久久精品网| 91亚洲午夜精品久久久久久| 国产成人在线看| 国产中文一区二区三区| 免费观看成人av| 丝袜美腿亚洲综合| 亚洲国产综合91精品麻豆| 亚洲三级在线观看| 国产精品麻豆99久久久久久| 久久―日本道色综合久久| 欧美videos中文字幕| 宅男在线国产精品| 7777精品伊人久久久大香线蕉完整版 | 精品不卡在线视频| 欧美一级一级性生活免费录像| 欧美日韩在线免费视频| 91福利在线导航| 色老头久久综合| 日本高清不卡aⅴ免费网站| 色婷婷精品大在线视频| 色综合天天综合色综合av | 欧美在线色视频| 色国产综合视频| 色菇凉天天综合网| 色婷婷激情综合| 欧美婷婷六月丁香综合色| 欧洲另类一二三四区| 欧美最猛性xxxxx直播| 欧美亚洲综合网| 在线不卡免费欧美| 日韩欧美综合在线| 亚洲精品在线观看视频| 久久欧美一区二区| 1区2区3区精品视频| 一区二区三区在线影院| 亚洲国产精品久久久久秋霞影院| 亚洲成人777| 精品一区中文字幕| 国产精品一区免费视频| 99久久国产免费看| 欧美三区免费完整视频在线观看| 欧美日本国产一区| 精品国产乱码久久久久久老虎 | 日韩午夜中文字幕| 久久丝袜美腿综合| 亚洲日本韩国一区| 三级影片在线观看欧美日韩一区二区 | 欧美韩国日本综合| 亚洲激情一二三区| 免费成人美女在线观看| 国产剧情av麻豆香蕉精品| 99re在线视频这里只有精品| 欧美日韩aaaaaa| 欧美激情中文不卡| 偷偷要91色婷婷| 国产成人精品aa毛片| 欧美色精品天天在线观看视频| 日韩一区国产二区欧美三区| 国产人成一区二区三区影院| 亚洲一区二区三区小说| 韩国成人精品a∨在线观看| 99久久精品国产观看| 3d动漫精品啪啪1区2区免费 | 国产原创一区二区| 91麻豆国产精品久久| 精品久久一区二区| 亚洲一二三四在线观看| 国产盗摄视频一区二区三区| 欧美日免费三级在线| 日本一区二区三区四区| 日韩国产欧美在线播放| 99久久99久久久精品齐齐| 欧美精选一区二区| 中文字幕一区二区三| 激情综合色播五月| 欧美性色黄大片手机版| 欧美激情中文字幕| 久久99蜜桃精品| 欧美高清视频www夜色资源网| 国产精品色一区二区三区| 免费日韩伦理电影| 欧美视频自拍偷拍| 亚洲欧美经典视频| hitomi一区二区三区精品| 欧美草草影院在线视频| 亚洲成人激情社区| 欧美在线一区二区三区| 国产精品乱子久久久久| 国产综合色在线| 日韩精品一区二区三区三区免费 | 婷婷亚洲久悠悠色悠在线播放 | 在线观看亚洲精品视频| 国产精品盗摄一区二区三区| 国产精华液一区二区三区| 欧美一区在线视频| 午夜精品一区二区三区免费视频| av午夜一区麻豆| 中文字幕中文在线不卡住| 成人小视频免费观看| 久久久久亚洲综合| 国产综合色产在线精品| 精品国产乱码久久久久久老虎 | 国产精品一二三四五| 精品奇米国产一区二区三区|