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

📄 funcs.asm

📁 基于TIc6205DSP上开发的MeanShift结合Kalman滤波的代码
💻 ASM
字号:
				.def _ImageSub
                .def _PixLineFilterW
                .def _ImageSub1

_ImageSub1:
				MVKL			000000FFH, A2
				MVKL			000000FFH, A2
				MV				A2,B2		; in A2 and B2 are mask value
				MVKL			6540H, A1
				MVKH			6540H, A1
LOOP:			LDW 	.D1		*A4++, A8
				LDW 	.D2		*B4++, B8
				NOP		4
				
				AND		.L1		A8, A2, A10		;byte 0
			||	AND		.L2		B8, B2, B10
			||	SHRU	.S1		A8, 8, A9
			||	SHRU	.S2		B8, 8, B9
				SUB		.L1X	A10, B10, A10
				ABS		.L1		A10, A10

				AND		.L1		A9, A2, A11		;byte1
			||	AND		.L2		B9, B2, B11
			||	SHRU	.S1		A9, 8, A8
			||	SHRU	.S2		B9, 8, B8
				SUB		.L1X	A11, B11, A11
				ABS		.L1		A11, A11
				
				AND		.L1		A8, A2, A12		;byte2
			||	AND		.L2		B8, B2, B12
			||	SHRU	.S1		A8, 8, A9
			||	SHRU	.S2		B8, 8, B9
				SUB		.L1X	A12, B12, A12
				ABS		.L1		A12, A12

				AND		.L1		A9, A2, A13		;byte3
			||	AND		.L2		B9, B2, B13
			||	SHRU	.S1		A9, 8, A8
			||	SHRU	.S2		B9, 8, B8
				SUB		.L1X	A13, B13, A13
				ABS		.L1		A13, A13
			
				SHL		.S1		A11, 8, A11
				SHL		.S1		A12, 16, A12
			||	OR		.L1		A10, A11, A10
				SHL		.S1		A13, 24, A13
			||	OR		.L1		A10, A12, A10
				OR		.S1		A10, A13, A10
				
;				STW				A10, *A6++
;				SUB				A1, 1H, A1
		[A1]	B				LOOP
				STW				A10, *A6++
				SUB				A1, 1H, A1
				NOP				3
				B				B3
				NOP 			5


;=============================================================
;子程序名: PixLineFilterW
;功    能: 将二值化的差分图滤波
;输入参数: 要处理的行A首地址,处理结果存放的首地址
;=============================================================
_PixLineFilterW:

             STW          A0, *--B15  
             STW          A1, *--B15 
             STW          A2, *--B15  
             STW          A5, *--B15
             STW          A6, *--B15  
             STW          A7, *--B15 
             STW          A9, *--B15
             STW          A10, *--B15  
             STW          A11, *--B15 
             STW          A12, *--B15  
             STW          A13, *--B15
             STW          B0, *--B15  
             STW          B1, *--B15 
             STW          B2, *--B15  
             STW          B5, *--B15
             STW          B6, *--B15  
             STW          B7, *--B15 
             STW          B8, *--B15  
             STW          B9, *--B15
             STW          B10, *--B15 
             STW          B11, *--B15  
             STW          B12, *--B15
             STW          B13, *--B15
             

             MVK     .S1   88, A1
             MVK     .S1   0x3FC, A7    ;  0X4FB = 5*0xFF
          || MVK     .S2   0,  B8 
             MVK     .S1   90, A2
                  
             MVK     .S1   0xFF, A0 
          || MVK     .S2   0xFF, B0  
                          
             MV      .L2X   A4, B1
          || MVK     .S2    90, B2
          || LDW     .D1   *A4, A5
             LDW     .D2   *+B1[B2],B5
             NOP 4
             LDW     .D2   *-B1[B2],B6
             NOP 2
             ADD     .L1   A4,  1,  A4
             AND     .L1   A5,  A0,  A10  
          || AND     .L2   B5,  B0,  B10
          || SHRU    .S1   A5,  8,   A9
          || SHRU    .S2   B5,  8,   B9          
             
             ADD     .L2X  B10, A10, B10    
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B10, B2,  B10
                
             AND     .L1   A9,  A0,  A11
          || AND     .L2   B9,  B0,  B11 
          || SHRU    .S1   A9,  8,  A5    
          || SHRU    .S2   B9,  8,  B5  
             
             ADD     .L2X  B11, A11, B11
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B11, B2, B11    
                        
             AND     .L1   A5,  A0,  A12
          || AND     .L2   B5,  B0,  B12 
          || SHRU    .S1   A5,  8,   A9    
          || SHRU    .S2   B5,  8,   B9  
             
             ADD     .L2X  B12, A12, B12
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B12, B2,  B12 
                         
             AND     .L1   A9,  A0,  A13
          || AND     .L2   B9,  B0,  B13 
          || AND     .S2   B6,  B0,  B2
             ADD     .L2X  B13, A13, B13
             ADD     .L2   B13, B2,  B13           
         
             ADD     .L2   B8,  B10, B8
             ADD     .S2   B8,  B11, B8       
          || ADD     .L2   B10, B11, B10
            
             CMPGTU  .L2X  B8,  A7,  B8
          || ADD     .S2   B10, B12, B10
             CMPGTU  .L2X  B10,  A7, B10
          || MPY     .M2   B8,  B0,  B8
             ADD     .L2   B11, B12, B11 
             MPY     .M2   B10,  B0, B10
             STB     .D2   B8,  *B4++         
          || ADD     .S2   B11, B13, B11           
             STB     .D2   B10,  *B4++
          || CMPGTU  .L2X  B11,  A7, B11
             MPY     .M2   B11,  B0, B11
             MV      .L2   B12, B7
             STB     .D2   B11,  *B4++      
          || MV      .S2   B13, B8   
             
NextPixW:    
                  
             MV      .L2X   A4, B1
          || MVK     .S2    90, B2
          || LDW     .D1   *A4, A5
             LDW     .D2   *+B1[B2],B5
             NOP 4
             LDW     .D2   *-B1[B2],B6
             NOP 2
             ADD     .L1   A4,  1,  A4
             AND     .L1   A5,  A0,  A10  
          || AND     .L2   B5,  B0,  B10
          || SHRU    .S1   A5,  8,   A9
          || SHRU    .S2   B5,  8,   B9          
             
             ADD     .L2X  B10, A10, B10    
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B10, B2,  B10
        
                
             AND     .L1   A9,  A0,  A11
          || AND     .L2   B9,  B0,  B11 
          || SHRU    .S1   A9,  8,  A5    
          || SHRU    .S2   B9,  8,  B5  
             
             ADD     .L2X  B11, A11, B11
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B11, B2, B11    
             
             AND     .L1   A5,  A0,  A12
          || AND     .L2   B5,  B0,  B12 
          || SHRU    .S1   A5,  8,   A9    
          || SHRU    .S2   B5,  8,   B9  
             
             ADD     .L2X  B12, A12, B12
          || AND     .S2   B6,  B0,  B2
             SHRU    .S2   B6,  8,   B6 
          || ADD     .L2   B12, B2,  B12 
                         
                 
             AND     .L1   A9,  A0,  A13
          || AND     .L2   B9,  B0,  B13 
          || AND     .S2   B6,  B0,  B2
             ADD     .L2X  B13, A13, B13
             ADD     .L2   B13, B2,  B13           
               
             ADD     .L2   B7,  B8,  B7
             ADD     .S2   B7,  B10, B7
          || ADD     .L2   B8,  B10, B8
              
             CMPGTU  .L2X  B7,  A7,  B7
          || ADD     .S2   B8,  B11, B8
             MPY     .M2   B7,  B0,  B7
          || CMPGTU  .L2X  B8,  A7,  B8
             ADD     .L2   B10,  B11, B10
             STB     .D2   B7,  *B4++      
          || MPY     .M2   B8,  B0,  B8
             ADD     .S2   B10,  B12, B10
          || ADD     .L2   B11,  B12, B11 
                   
             CMPGTU  .L2X  B10,  A7,  B10  
          || ADD     .S2   B11,  B13, B11
             MPY     .M2   B10,  B0,  B10
          || CMPGTU  .L2X  B11,  A7,  B11
             STB     .D2   B8,  *B4++
          || MPY     .M2   B11,  B0,  B11
             STB     .D2   B10,  *B4++  
             STB     .D2   B11,  *B4++  
                                      
        [A1] B    NextPixW 
             MV   .L2   B12, B7
             MV   .S2   B13, B8 
             SUB  .L1   A1, 1, A1 
             NOP   2 
             
             
             LDW				*B15++, B13
             LDW				*B15++, B12
             LDW				*B15++, B11
             LDW				*B15++, B10
             LDW				*B15++, B9
             LDW				*B15++, B8
             LDW				*B15++, B7
             LDW				*B15++, B6
             LDW				*B15++, B5
             LDW				*B15++, B2
             LDW				*B15++, B1
             LDW				*B15++, B0
             LDW				*B15++, A13
             LDW				*B15++, A12
             LDW				*B15++, A11
             LDW				*B15++, A10
             LDW				*B15++, A9
             LDW				*B15++, A7
             LDW				*B15++, A6
             LDW				*B15++, A5
             LDW				*B15++, A2
             LDW				*B15++, A1
             LDW				*B15++, A0
             
             NOP 4
             
             B    B3
             NOP  5

;==============================================================
;子程序名: _SqTemplate
;功    能: 模板平方和
;输入参数: 模板首地址
           
;==============================================================
_SqTemplate:
             
             
            B   B3
            NOP 5 






;=============================================================
;子程序名: PixLineFilterB
;功    能: 将二值化的差分图滤波
;输入参数: 要处理的行A首地址,处理结果存放的首地址
;=============================================================


_PixLineFilterB:
         
             MVK   .S1   359, A1
         ||  MVK   .S2   0x3FC, B9    ;  0X4FB = 4*0xFF
             MVK   .S1   360, A2 
         ||  MVK   .S2   360, B2  
         
             MVK   .S2   0xFF, B10  
         ||  LDB   .D1   *A4, A5
             MV    .L2X  A4,B1
             LDB   .D2   *-B1[B2],B11
             MVK   .S2   0, B5 
             MVK   .S2   0, B6
             LDB   .D1   *+A4[A2],A7
             ADD   .L2   B6, A5, B6
             ADD   .L2   B6, B11, B6
             ADD   .L2X  B6, A7, B6
             NOP    
             ADD   .S2   B5, B6, B8 
             
NextPixB:    
             ADD     .D1   A4, 1, A4
             LDB     .D1   *A4, A5
             MV      .L2X  A4,B1
             LDB     .D2   *-B1[B2],B11
             MVK     .S2   0, B7 
             ADD     .L2X  B7, A5, B7
             LDB     .D1   *+A4[A2],A7
             ADD     .L2   B7, B11, B7  
             ADD     .L2   B8, B7, B8 
             MV      .S2   B6, B5   
        [A1] B    NextPixB 
             ADD     .L2   B8, A7, B8
             ADD     .S2   B7, A7, B7
         ||  CMPGTU  .L2   B8, B9, B8  
             MV      .L2   B7, B6 
         ||  MPY     .M2   B8, B10, B8
             STB     .D2   B8, *B4++ 
             ADD     .S2   B5, B6, B8
         ||  SUB     .L1   A1, 1, A1 
             B    B3
             NOP  5





_ImageSub: 
         mvkl 0x00006540,a1
         mvkh 0x00006540,a1
         mvkl 0xff,a3
         mvkh 0xff,a3
Loop1:   ldw *a4++, a0
         ldw *b4++, a5
         mvkl 0x4,a2
         mvkh 0x4,a2 
         zero b5
         zero b6
Loop2:   sub a2,1,a2
         shr a0,b6,b0
         shr a5,b6,b1
         and a3,b0,b0
         and a3,b1,b1
    [a2] b  Loop2 
         sub b0,b1,b2
         abs b2,b2
         shl b2,b6,b2 
         add b5,b2,b5
         add b6,8,b6
         stw b5,*a6++ 
         sub a1,1,a1
    [a1] b  Loop1
         nop 5
         b b3
         nop 5        



;==============================================================
;子程序名: MutualityW
;功    能: 两块区域做相关
;输入参数: 模板首地址啊A4,区域二首地址B4,模板容量A6,模板宽度B6,
;           区域宽度A8, 返回值1--B8, 返回值2--A10      
;==============================================================

_MutualityW:
             
             MV   .L1  A6, A1
             SHRU .S1  A1, 4, A1  
             MV   .L2  B6, B1
             MV   .L1  A8, A5 
             
             MV   .S1X B8, A6 
             MV   .D1  A10, A7 
         
          || MVK  .S1  0xFF, A2
          || MVK  .S2  0xFF, B2                
         
LOOPX:       MVK  .S1  0,    A0 
          || MVK  .S2  0,    B0 
          
             LDW  .D1 *A4++, A8
          || LDW  .D2 *B4++, B8
             NOP 4
             
             AND   .L1   A8,  A2,  A10
          || AND   .L2   B8,  B2,  B10 
          || SHRU  .S1   A8,  8,   A9
          || SHRU  .S2   B8,  8,   B9
             MPYU   .M1X  A10, B10, A10          
          || MPYU   .M2   B10, B10, B5
                 
             AND   .L1   A9,  A2,  A11
          || AND   .L2   B9,  B2,  B11 
          || SHRU  .S1   A9,  8,   A8
          || SHRU  .S2   B9,  8,   B8
             MPYU   .M1X  A11, B11, A11
          || MPYU   .M2   B11, B11, B6
          || ADD    .L1   A0,  A10, A0
          || ADD    .L2   B0,  B5,  B0     
                  
             AND   .L1   A8,  A2,  A12
          || AND   .L2   B8,  B2,  B12 
          || SHRU  .S1   A8,  8,   A9
          || SHRU  .S2   B8,  8,   B9
             MPYU  .M1X  A12, B12, A12
          || MPYU  .M2   B12, B12, B7      
          || ADD   .L1   A0,  A11, A0           
          || ADD   .L2   B0,  B6,  B0                 
             
             AND   .L1   A9,  A2,  A13
          || AND   .L2   B9,  B2,  B13 
          || SHRU  .S1   A9,  8,   A8
          || SHRU  .S2   B9,  8,   B8
             MPYU  .M1X  A13, B13, A13
          || MPYU  .M2   B13, B13, B5  
          || ADD   .L1   A0,  A12, A0 
          || ADD   .L2   B0,  B7,  B0   
       
       [A1]  B  LOOPX            
             ADD   .L1   A0,  A13, A0
             ADD   .L2   B0,  B5,  B0
             SUB   .L1   A1,  1,   A1
             NOP  2
             STW   .D1   A0,  *A6
             MV    .S1X  B0,  A0 
             STW   .D1   A0,  *A7
             
             B  B3
             NOP  5       









⌨️ 快捷键说明

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