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

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

?? modified_ebcot.c

?? 這是我剛剛完成的關于JPEG2000的C語言實現的部分程序。小波變換是采用97變換
?? C
?? 第 1 頁 / 共 3 頁
字號:
/******************************************************************************
功能描述:
   Implements block_encode 
以下部分是對EBCOT的編碼。三個通道。四種編碼形式
功能描述:編碼過程中,每個系數總處于三種狀態之一:無效態,有效態,上下文有效態
******************************************************************************/
/*****************************************************************************/
// 程序: ebcot 編碼
// 版本:  V0.0
// 作者: 胡運平
// 最后修改時間 : 30, 6, 2005
/****************************************************************************/
#include <stdio.h>
#include<math.h>
#include<assert.h>
#include"fdwt.h"
#include"block_encode.h"

/******************************************************************************
//函數功能:
//輸入:1 3  7 15 31 63 127 255
//輸出  1 2  3  4  5  6  7  8
*******************************************************************************/
int log2i(int val)
{
	int i;
	if(val>=0 && val<=1)
		i=0;
		else if(val>=2 && val<=3)
		i= 1;
		else if(val>=4 && val<=7)
		 i =2;
		else if(val>=8 && val<=15)
		 i=3;
		else if(val>=16 && val<=31)
			i=4;
		else if(val>=32 && val<=63)
			i=5;
		else if(val>=64 && val<=127)
			i=6;
		else if(val>=128 && val<=255)
			i=7;

	return i;
}
/******************************************************************************
//輸入為block code 的小波量化系數,輸出為文件形式的(CX,D)
*******************************************************************************/
void block_encode(int block_bufferin[BLOCKLENGTH][BLOCKWIDTH])
{
	int i,j,k,m;
	int max;
	unsigned char c[BLOCKLENGTH][BLOCKWIDTH];//顯著性狀態。
	unsigned int f[BLOCKLENGTH][BLOCKWIDTH] = {0};
//	unsigned char kign;
	FILE *context;
	if ((context = fopen("context.raw","wb+")) == NULL)
	{
		printf("cannot open file\n");
		return;
	}
/*******************************************************************************
// x;//符號變量
// q;//顯著性狀態變量
// e;//延遲顯著性狀態變量 表示系數是否是第一次被量值改進,也叫細化信息位
// v;//樣本比特值
// pi;//編碼狀態變量 ,在每個位平面P的第一編碼過程中設置其值,若該樣本在該編碼過程
//中處理,置1,否則設成0 初始化所有狀態變量為0
********************************************************************************/
  for(i=0;i<BLOCKLENGTH;i++)
	for(j=0;j<BLOCKWIDTH;j++)
	{
		state_data_x[i][j] = 0;
		state_data_q[i][j] = 0;
		state_data_e[i][j] = 0;
		state_data_v[i][j] = 0;
		state_data_pi[i][j] = 0;
	}
/******************************************************************************
//小波系數的預處理,完成三個功能:碼塊生成過程,數據格式轉換過程,碼塊最大值查
找過程
//求單個碼塊的最大值和把符號位提取出來給符號變量X;符號變換,補碼形式變成源碼形式
*******************************************************************************/
	max = abs(block_bufferin[0][0]);
	for(i=0;i<BLOCKLENGTH;i++)
		for(j=0;j<BLOCKWIDTH;j++)
		{		
			state_data_x[i][j] = (block_bufferin[i][j]>>16 & 1);
			block_bufferin[i][j] = abs(block_bufferin[i][j]);
			if(block_bufferin[i][j]>max)
			max = block_bufferin[i][j];
		}
//環境狀態字初始化,16位,每一個總共表示有1個系數的所有狀態變量。
	for(i=0;i<BLOCKLENGTH;i++)
		for(j=0;j<BLOCKWIDTH;j++)
		{
			c[i][j] = 0;	
		}
/******************************************************************************
//預處理完畢可以進行下面的核心編碼操作,以四個系數作為一個stripe編碼,
//最高位平面開始編碼,最高位平面只進行cleanup通道編碼	
//依次經過三個編碼通道。
//環境狀態字給初值,12位,顯示重要性狀態值。狀態變量如下所示:
// x;//符號變量
// q;//顯著性狀態變量
// e;//延遲顯著性狀態變量 表示系數是否是第一次被量值改進,也叫細化信息位
// v;//樣本比特值
// pi;//編碼狀態變量 表示位平面上的比特值是否已經被編碼,也叫訪問信息位
********************************************************************************/
for(k=log2i(max);k>-1;k--)
{//位平面層數,從最高位平面到最低位平面0編碼
	for(i=0;i<BLOCKLENGTH;i++)
	{
		for(j=0;j<BLOCKWIDTH;j++)
		{
			c[i][j] = state_data_q[i][j];
			state_data_v[i][j] = ((block_bufferin[i][j]>>k) & 1);
			state_data_pi[i][j] = 0;
		//	printf("%d ",c[i][j]);
		//	printf("%d ",state_data[i][j].v);
		//	printf("%d ",state_data_x[i][j]);
		//	printf("%d ",block_bufferin[i][j]);
		}
	}
init_environment(f,c,state_data_x);

for(i=0;i<BLOCKLENGTH/4;i++)
{
	for(j=0;j<BLOCKWIDTH;j++)
	{
		if(k==log2i(max)) 
			goto RLC;
		else
		{					
		//開始重要性傳播位平面的重要性掃描通道,處理當前不顯著,但具有顯著鄰域的樣本
			if(state_data_q[4*i][j]==0 && init_significant(f[4*i][j],0)>0 &&init_significant(f[4*i][j],0)<9)
			{//當前系數不是重要性系數,上下文區域不是0							
				fprintf(context,"%d %d ",init_significant(f[4*i][j],0),state_data_v[4*i][j]);
				if(state_data_v[4*i][j])
				{
					state_data_q[4*i][j]  = 1;
					//unsigned char init_sign(unsigned int f, unsigned char v,int i,int j)
					fprintf(context,"%d %d ",init_sign(f[4*i][j],state_data_x[4*i][j]),state_data_x[4*i][j]);				
				}
				state_data_pi[4*i][j] = 1;
			for(m=1;m<4;m++)	
			{//開始重要性傳播位平面的重要性掃描通道,處理當前不顯著,但具有顯著鄰域的樣本
				if(state_data_q[4*i+m][j]==0 && init_significant(f[4*i+m][j],0)>0 &&init_significant(f[4*i+m][j],0)<9)
				{//當前系數不是重要性系數,上下文區域不是0							
					fprintf(context,"%d %d ",init_significant(f[4*i+m][j],0),state_data_v[4*i+m][j]);
					if(state_data_v[4*i+m][j])
					{
						state_data_q[4*i+m][j]  = 1;
						//unsigned char init_sign(unsigned int f, unsigned char v,int i,int j)
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);				
					}
					state_data_pi[4*i+m][j] = 1;
					
				}
				else
					state_data_pi[4*i+m][j] = 0;
			//開始幅值細化通過,位平面的幅度細化掃描通道
				if(state_data_q[4*i+m][j]==1 && state_data_pi[4*i+m][j]==0)  
				{//該系數是重要的,						
					fprintf(context,"%d %d ",init_magnitude(f[4*i+m][j],state_data_e[4*i+m][j]),state_data_v[4*i+m][j]);
					state_data_e[4*i+m][j] = 1;		
				}
				//開始清除通過,此掃描數據沒有經過前兩個通道則進入清除通道編碼
				if(state_data_q[4*i+m][j]==0 && init_significant(f[4*i+m][j],0)==0)
				{//當前系數不是重要性系數							
					fprintf(context,"%d %d ",init_significant(f[4*i+m][j],0),state_data_v[4*i+m][j]);
					if(state_data_v[4*i+m][j])
					{
						state_data_q[4*i+m][j]  = 1;
						//unsigned char init_sign(unsigned int f, unsigned char v,int i,int j)
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);				
					}					
				}			
			}
			continue;		
			}
			else
				state_data_pi[4*i][j] = 0;
		//開始幅值細化通過,位平面的幅度細化掃描通道
			if(state_data_q[4*i][j]==1 && state_data_pi[4*i][j]==0)  
			{//該系數是重要的,						
				fprintf(context,"%d %d ",init_magnitude(f[4*i][j],state_data_e[4*i][j]),state_data_v[4*i][j]);
				state_data_e[4*i][j] = 1;
			for(m=1;m<4;m++)	
			{//開始重要性傳播位平面的重要性掃描通道,處理當前不顯著,但具有顯著鄰域的樣本
				if(state_data_q[4*i+m][j]==0 && init_significant(f[4*i+m][j],0)>0 &&init_significant(f[4*i+m][j],0)<9)
				{//當前系數不是重要性系數,上下文區域不是0							
					fprintf(context,"%d %d ",init_significant(f[4*i+m][j],0),state_data_v[4*i+m][j]);
					if(state_data_v[4*i+m][j])
					{
						state_data_q[4*i+m][j]  = 1;
						//unsigned char init_sign(unsigned int f, unsigned char v,int i,int j)
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);				
					}
					state_data_pi[4*i+m][j] = 1;
					
				}
				else
					state_data_pi[4*i+m][j] = 0;
			//開始幅值細化通過,位平面的幅度細化掃描通道
				if(state_data_q[4*i+m][j]==1 && state_data_pi[4*i+m][j]==0)  
				{//該系數是重要的,						
					fprintf(context,"%d %d ",init_magnitude(f[4*i+m][j],state_data_e[4*i+m][j]),state_data_v[4*i+m][j]);
					state_data_e[4*i+m][j] = 1;		
				}
				//開始清除通過,此掃描數據沒有經過前兩個通道則進入清除通道編碼
				if(state_data_q[4*i+m][j]==0 && init_significant(f[4*i+m][j],0)==0)
				{//當前系數不是重要性系數							
					fprintf(context,"%d %d ",init_significant(f[4*i+m][j],0),state_data_v[4*i+m][j]);
					if(state_data_v[4*i+m][j])
					{
						state_data_q[4*i+m][j]  = 1;
						//unsigned char init_sign(unsigned int f, unsigned char v,int i,int j)
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);				
					}					
				}			
			}
			continue;
			}
		
//開始清除通過
RLC:	if((init_significant(f[4*i][j],0)==0) && (init_significant(f[4*i+1][j],0)==0) &&
			(init_significant(f[4*i+2][j],0)==0) && (init_significant(f[4*i+3][j],0)==0))
		{
			if(!(state_data_v[4*i][j] | state_data_v[4*i+1][j] | 
				state_data_v[4*i+2][j] | state_data_v[4*i+3][j]))
			{
				fprintf(context,"%d %d ",17,0);
//				state_data_pi[4*i][j] = state_data_pi[4*i+1][j] =
//					state_data_pi[4*i+2][j] = state_data_pi[4*i+3][j] = 1;
				continue;
			}
			for(m = 0;m<4;m++)
			{
				if(state_data_v[4*i+m][j])
				{
					fprintf(context,"%d %d ",17,1);
					if(m == 0)
						{
							fprintf(context,"%d %d ",18,0);
							fprintf(context,"%d %d ",18,0);
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);						
						state_data_q[4*i+m][j] = 1;//重要性標志置1
//						state_data_pi[4*i+m][j] = 1;//標志此位被訪問過。
						//第二位開始編碼
						fprintf(context,"%d %d ",init_significant(f[4*i+m+1][j],0),state_data_v[4*i+m+1][j]);
//						state_data_pi[4*i+m+1][j] = 1;//標志此位被訪問過。
						if(state_data_v[4*i+m+1][j])
						{
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
							fprintf(context,"%d %d ",init_sign(f[4*i+m+1][j],state_data_x[4*i+m+1][j]),state_data_x[4*i+m+1][j]);
							state_data_q[4*i+m+1][j] = 1;//重要性標志置1
						}
						//第三位開始編碼
						fprintf(context,"%d %d ",init_significant(f[4*i+m+2][j],0),state_data_v[4*i+m+2][j]);
//						state_data_pi[4*i+m+2][j] = 1;//標志此位被訪問過。
						if(state_data_v[4*i+m+2][j])
						{
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
							fprintf(context,"%d %d ",init_sign(f[4*i+m+2][j],state_data_x[4*i+m+2][j]),state_data_x[4*i+m+2][j]);
							state_data_q[4*i+m+2][j] = 1;//重要性標志置1
						}
						//第四位開始編碼
						fprintf(context,"%d %d ",init_significant(f[4*i+m+3][j],0),state_data_v[4*i+m+3][j]);
//						state_data_pi[4*i+m+3][j] = 1;//標志此位被訪問過。
						if(state_data_v[4*i+m+3][j])
						{
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
							fprintf(context,"%d %d ",init_sign(f[4*i+m+3][j],state_data_x[4*i+m+3][j]),state_data_x[4*i+m+3][j]);
							state_data_q[4*i+m+3][j] = 1;//重要性標志置1
						}	
						break;
						}
					 if(m == 1)
						{
							fprintf(context,"%d %d ",18,0);
							fprintf(context,"%d %d ",18,1);
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
						fprintf(context,"%d %d ",init_sign(f[4*i+m][j],state_data_x[4*i+m][j]),state_data_x[4*i+m][j]);						
						state_data_q[4*i+m][j] = 1;//重要性標志置1
//						state_data_pi[4*i+m-1][j] = 1;//標志此位被訪問過。
//						state_data_pi[4*i+m][j] = 1;//標志此位被訪問過。
						//第三位開始編碼
						fprintf(context,"%d %d ",init_significant(f[4*i+m+1][j],0),state_data_v[4*i+m+1][j]);
//						state_data_pi[4*i+m+1][j] = 1;//標志此位被訪問過。
						if(state_data_v[4*i+m+1][j])
						{
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
							fprintf(context,"%d %d ",init_sign(f[4*i+m+1][j],state_data_x[4*i+m+1][j]),state_data_x[4*i+m+1][j]);
							state_data_q[4*i+m+1][j] = 1;//重要性標志置1
						}
						//第四位開始編碼
						fprintf(context,"%d %d ",init_significant(f[4*i+m+2][j],0),state_data_v[4*i+m+2][j]);
//						state_data_pi[4*i+m+2][j] = 1;//標志此位被訪問過。
						if(state_data_v[4*i+m+2][j])
						{
						//此時將符號位元編碼,有5種可能的情況(9-13)sign coding
						// Encode sign bit
							fprintf(context,"%d %d ",init_sign(f[4*i+m+2][j],state_data_x[4*i+m+2][j]),state_data_x[4*i+m+2][j]);
							state_data_q[4*i+m+2][j] = 1;//重要性標志置1

						}
						break;
						}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜诱惑亚洲看片| 国产校园另类小说区| 亚洲一区二区欧美日韩| 欧美视频三区在线播放| 亚洲成av人综合在线观看| 欧美吞精做爰啪啪高潮| 日韩和欧美的一区| 日韩精品一区二区三区蜜臀| 国产一区二区三区免费| 久久九九全国免费| 91美女片黄在线观看91美女| 亚洲欧美日本韩国| 欧美日韩亚洲国产综合| 日韩精品三区四区| 久久久精品综合| 色欧美片视频在线观看| 首页国产丝袜综合| 精品福利在线导航| 成人激情av网| 亚洲v日本v欧美v久久精品| 欧美tickle裸体挠脚心vk| 成人国产一区二区三区精品| 亚洲一区中文日韩| 日韩精品资源二区在线| 成人aa视频在线观看| 亚洲成人一区二区在线观看| 精品国产乱子伦一区| 9人人澡人人爽人人精品| 日韩精品一级中文字幕精品视频免费观看 | 亚洲图片另类小说| 欧美理论电影在线| 大桥未久av一区二区三区中文| 亚洲卡通动漫在线| 日韩欧美区一区二| 蜜臀久久久99精品久久久久久| 欧美一区二区三区四区在线观看| 国产精品一区免费在线观看| 亚洲欧洲日韩女同| 欧美电视剧免费观看| 91丨porny丨国产| 狠狠色伊人亚洲综合成人| 亚洲视频在线一区二区| 精品精品国产高清一毛片一天堂| 色综合婷婷久久| 国产一区 二区| 天天影视网天天综合色在线播放| 国产三级精品三级| 91麻豆精品国产91久久久更新时间| 成人激情文学综合网| 秋霞影院一区二区| 亚洲一区二区在线视频| 欧美国产日本视频| 欧美成人一区二区三区| 中文字幕中文乱码欧美一区二区| 一区二区三区日韩在线观看| 精品三级在线看| 欧美日韩成人综合在线一区二区| 成人av资源站| 国产精一品亚洲二区在线视频| 亚洲成人777| 亚洲青青青在线视频| 久久综合久色欧美综合狠狠| 在线观看区一区二| 91蝌蚪porny九色| 国产精品一区二区久久不卡| 美女网站在线免费欧美精品| 三级久久三级久久久| 一区二区三区在线视频播放| 亚洲国产精品成人综合| 国产亚洲一区二区在线观看| 日韩精品一区二区三区swag| 91精品午夜视频| 在线中文字幕不卡| 91老司机福利 在线| 91麻豆免费视频| www.av亚洲| 97精品久久久午夜一区二区三区| 风间由美一区二区三区在线观看 | 国产精品白丝av| 美女视频第一区二区三区免费观看网站| 亚洲国产日韩综合久久精品| 亚洲大片免费看| 亚洲国产另类av| 亚洲成人av福利| 美女爽到高潮91| 国产一区二区三区四区五区美女| 国产一区二区三区精品欧美日韩一区二区三区 | 亚州成人在线电影| 亚洲国产精品久久不卡毛片| 亚洲视频在线观看一区| 亚洲色图欧美激情| 国产精品成人免费在线| 国产精品久久久久四虎| 国产免费成人在线视频| 久久影院午夜片一区| 26uuu国产一区二区三区| 日韩精品中文字幕在线一区| 日韩一级二级三级| 久久网站最新地址| 2021中文字幕一区亚洲| 国产精品久久看| 亚洲一二三区视频在线观看| 久久er精品视频| 成人av在线一区二区三区| 色偷偷久久人人79超碰人人澡| 欧美日韩国产小视频| 欧美变态口味重另类| 欧美国产禁国产网站cc| 亚洲一区在线观看视频| 国产一二三精品| 91成人在线免费观看| 91精品欧美一区二区三区综合在| 精品sm在线观看| 亚洲人成小说网站色在线 | 欧美精品丝袜中出| 久久亚洲综合av| 一区二区不卡在线视频 午夜欧美不卡在| 五月激情六月综合| 成人不卡免费av| 制服丝袜亚洲色图| 中文字幕中文乱码欧美一区二区| 午夜不卡av在线| 国产91在线观看丝袜| 欧美日韩精品福利| 国产精品欧美极品| 日本成人在线一区| 91啪亚洲精品| 久久免费偷拍视频| 午夜国产不卡在线观看视频| 成人开心网精品视频| 日韩一区二区三区在线| 亚洲在线视频一区| 成人免费毛片嘿嘿连载视频| 69久久夜色精品国产69蝌蚪网| 国产精品欧美久久久久一区二区| 青椒成人免费视频| 欧美午夜精品一区二区三区| 国产欧美日韩精品一区| 免费人成在线不卡| 在线观看免费一区| 国产精品青草久久| 国产美女精品在线| 欧美一区二区高清| 午夜电影网亚洲视频| 色婷婷亚洲精品| 亚洲欧洲美洲综合色网| 国产一区二区免费看| 日韩午夜激情电影| 水野朝阳av一区二区三区| 欧美在线色视频| 亚洲视频一二三| 92精品国产成人观看免费| 中文字幕乱码亚洲精品一区| 国产一区二区免费视频| 欧美不卡一二三| 久久爱另类一区二区小说| 538prom精品视频线放| 亚洲午夜成aⅴ人片| 在线看一区二区| 亚洲精品乱码久久久久| 99re热视频精品| 中文字幕一区在线观看| 成人深夜在线观看| 欧美国产一区在线| 成人av中文字幕| 久久久精品人体av艺术| 国内不卡的二区三区中文字幕| 精品国产麻豆免费人成网站| 香蕉加勒比综合久久| 在线一区二区三区| 国产精品免费网站在线观看| 国产精品小仙女| 欧美白人最猛性xxxxx69交| 日韩一区精品视频| 欧美一区二区三区视频在线| 亚洲无人区一区| 99久久精品免费| 国产精品美女久久久久aⅴ | 国产一区日韩二区欧美三区| 欧美亚洲一区二区在线| 亚洲人成小说网站色在线| 欧美性猛片xxxx免费看久爱| 亚洲女同一区二区| 欧美日韩mp4| 青青草国产精品亚洲专区无| 欧美一区日韩一区| 国产乱一区二区| 亚洲欧洲性图库| 欧美日韩精品一区二区在线播放| 首页国产欧美日韩丝袜| 精品国产乱码久久久久久浪潮| 国产成人超碰人人澡人人澡| 亚洲视频一区在线| 欧美一区二区三区在| 国产一区美女在线| 日韩毛片高清在线播放| 欧美区视频在线观看| 国模无码大尺度一区二区三区| 国产精品乱人伦| 777色狠狠一区二区三区|