#include <stdio.h> #include <stdlib.h> #define LEN 4 int ARR[LEN][LEN]; int RST[2*LEN][2*LEN]; void DISPLAY_RST(){ int i; int j; printf ("i\tj\tRST\n"); for(i=0; i< 2*LEN; i++){ for(j=0; j< 2*LEN; j++){ printf("%d\t%d\t%d\n",i,j,RST[i][j]); } printf("\n"); } } void SCALAR_ARR(){ int i; int j; for( i=0; i< LEN; i++){ for( j=0; j< LEN; j++){ RST[2*i][2*j] = ARR[i][j]; if( i!=LEN-1 && j!=LEN-1 ){ RST[2*i][2*j+1] = (ARR[i][j] + ARR[i][j+1])>>1; RST[2*i+1][2*j] = (ARR[i][j] + ARR[i+1][j])>>1; RST[2*i+1][2*j+1]= (ARR[i][j] + ARR[i+1][j] + ARR[i][j+1] + ARR[i+1][j+1] )>>2; } else if( i!=LEN-1 && j==LEN-1 ){ RST[2*i][2*j+1] = ARR[i][j]; RST[2*i+1][2*j] = (ARR[i][j] + ARR[i+1][j])>>1; RST[2*i+1][2*j+1] = (ARR[i][j] + ARR[i+1][j])>>1; } else if( i==LEN-1 && j!=LEN-1 ){ RST[2*i+1][2*j] = ARR[i][j]; RST[2*i][2*j+1] = (ARR[i][j] + ARR[i][j+1])>>1; RST[2*i+1][2*j+1] = (ARR[i][j] + ARR[i][j+1])>>1; } else { RST[2*i+1][2*j+1] = ARR[i][j]; RST[2*i+1][2*j] = ARR[i][j]; RST[2*i][2*j+1] = ARR[i][j]; } } } } void INI_ARR(){ int i; int j; int k=0; for( i=0; i< LEN; i++){ for( j=0; j< LEN; j++){ ARR[i][j] = k++; printf("%d\t%d\t%d\n",i,j,ARR[i][j]); } } printf("===========\n"); } int main (int *argc,char argv[]){ INI_ARR(); SCALAR_ARR(); DISPLAY_RST(); return 0; }PS : 目前我們只考慮單向的"放大" function.
2010年7月1日 星期四
Image Scalar 4 ESL Flow Golden Model
有 ESL Design Flow 概念後, 底下就用最簡單的 Image Scalar 當例子
ESL Design Flow
Ref: image scaling
利用內差補點的方式,做 Pixel 的放大縮小.
以 2x2 放大成 4x4 的例子
以 4x4 縮小成 2x2的例子
Ref : CIC 96學年決賽競賽題目(研究所組/大學組)
有了image scaling 的概念後, 開始建立 Golden Model
scalar.c
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言