⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 img_corr_3x3.h64

📁 dm642函数库
💻 H64
字号:
;* ======================================================================== *;
;*  TEXAS INSTRUMENTS, INC.                                                 *;
;*                                                                          *;
;*  IMGLIB  DSP Image/Video Processing Library                              *;
;*                                                                          *;
;*      Release:        Revision 1.04b                                      *;
;*      CVS Revision:   1.4     Sun Sep 29 03:32:19 2002 (UTC)              *;
;*      Snapshot date:  23-Oct-2003                                         *;
;*                                                                          *;
;*  This library contains proprietary intellectual property of Texas        *;
;*  Instruments, Inc.  The library and its source code are protected by     *;
;*  various copyrights, and portions may also be protected by patents or    *;
;*  other legal protections.                                                *;
;*                                                                          *;
;*  This software is licensed for use with Texas Instruments TMS320         *;
;*  family DSPs.  This license was provided to you prior to installing      *;
;*  the software.  You may review this license by consulting the file       *;
;*  TI_license.PDF which accompanies the files in this library.             *;
;* ------------------------------------------------------------------------ *;
;*          Copyright (C) 2003 Texas Instruments, Incorporated.             *;
;*                          All Rights Reserved.                            *;
;* ======================================================================== *;
;* ======================================================================== *;
;*  Assembler compatibility shim for assembling 4.30 and later code on      *;
;*  tools prior to 4.30.                                                    *;
;* ======================================================================== *;
;* ======================================================================== *;
;*  End of assembler compatibility shim.                                    *;
;* ======================================================================== *;
* ========================================================================= *
*   TEXAS INSTRUMENTS, INC.                                                 *
*                                                                           *
*   NAME                                                                    *
*       corr_3x3: 3x3 correlation with rounding for 8 bit data              *
*                                                                           *
*   REVISION DATE                                                           *
*       14-Mar-2002                                                         *
*                                                                           *
*   USAGE                                                                   *
*       This routine is C-callable and can be called as:                    *
*                                                                           *
*           void IMG_corr_3x3                                               *
*           (                                                               *
*               const unsigned char *i_data,       // input image       //  *
*               int        *restrict o_data,       // output image      //  *
*               const unsigned char  mask[3][3],   // convolution mask  //  *
*               int                  x_dim,        // width of image    //  *
*               int                  n_out         // number of outputs //  *
*           );                                                              *
*                                                                           *
*   DESCRIPTION                                                             *
*       The correlation performs a point by point multiplication of the     *
*       3 by 3 mask with the input image.  The result of the nine           *
*       multiplications are then summed up together to produce a            *
*       convolution sum.  This sum is then stored to the output array.      *
*                                                                           *
*       The image mask to be correlated is typically part of the input      *
*       image and indicates the area of the best match between the          *
*       input image and mask.  The mask is moved one column at a time,      *
*       advancing the mask over the portion of the row specified by         *
*       'n_out'.  When 'n_out' is larger than 'x_dim', multiple rows        *
*       will be processed.                                                  *
*                                                                           *
*       An application may call this kernel once per row to calculate       *
*       the correlation for an entire image:                                *
*                                                                           *
*           for (i = 0; i < rows; i++)                                      *
*           {                                                               *
*               IMG_corr_3x3(&i_data[i * x_dim], &o_data[i * n_out],        *
*                           mask, x_dim, n_out);                            *
*           }                                                               *
*                                                                           *
*       Alternately, the kernel may be invoked for multiple rows at         *
*       a time, although the two outputs at the end of each row will        *
*       have meaningless values.  For example:                              *
*                                                                           *
*           IMG_corr_3x3(i_data, o_data, mask, x_dim, 2 * x_dim);           *
*                                                                           *
*       This will produce two rows of outputs into 'o_data'.  The           *
*       outputs at locations o_data[x_dim - 2], o_data[x_dim - 1],          *
*       o_data[2*x_dim - 2] and o_data[2*x_dim - 1] will have               *
*       meaningless values.  This is harmless, although the application     *
*       will have to account for this when interpreting the results.        *
*                                                                           *
*   ASSUMPTIONS                                                             *
*       The array pointed to by o_data does not alias with the array        *
*       pointed to by i_data or mask.                                       *
*                                                                           *
*       The number of outputs 'n_out' must be a multiple of 8.  In cases    *
*       where 'n_out' is not a multiple of 8, most applications can safely  *
*       round 'n_out' up to the next multiple of 8 and ignore the extra     *
*       outputs.  This kernel does not round 'n_out' up for the user.       *
*                                                                           *
*   NOTE                                                                    *
*       This kernel is fully interruptible.                                 *
*                                                                           *
*   MEMORY NOTE                                                             *
*       This kernel places no restrictions on the alignment of its input.   *
*                                                                           *
*       No bank conflicts occur.                                            *
*                                                                           *
*       This code assumes a LITTLE ENDIAN configuration.                    *
*                                                                           *
*   TECHNIQUES                                                              *
*       The inner loops are unrolled completely, and the outer loop is      *
*       unrolled 8 times.                                                   *
*                                                                           *
*       We use 3 DOTPU4s to calculate the 3 rows of each output pixel.      *
*       We then accumulate the 3 DOTPU4s to a 32-bit result and store       *
*       them out.  (Note that only 3 of every 4 8-bit MPYs in the DOTPU4    *
*       is actually used.  The fourth MPY is unused.)                       *
*                                                                           *
*       We use non-aligned loads and stores to avoid alignment issues.      *
*                                                                           *
*   CYCLES                                                                  *
*       cycles = 1.5 * n_out + 22                                           *
*       For n_out = 248, cycles = 394.                                      *
*                                                                           *
*       This number includes 6 cycles of function call overhead.  The       *
*       exact overhead will vary depending on compiler options used.        *
*                                                                           *
*   CODESIZE                                                                *
*       296 bytes.                                                          *
* ------------------------------------------------------------------------- *
*             Copyright (c) 2003 Texas Instruments, Incorporated.           *
*                            All Rights Reserved.                           *
* ========================================================================= *

        .global _IMG_corr_3x3

* ========================================================================= *
*   End of file:  img_corr_3x3.h64                                          *
* ------------------------------------------------------------------------- *
*             Copyright (c) 2003 Texas Instruments, Incorporated.           *
*                            All Rights Reserved.                           *
* ========================================================================= *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -