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

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

?? wavelettransform.java

?? 圖象編輯器
?? JAVA
字號:
package imageapp;

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;

class WaveletTransform {
	
	public static void wavelet(float s0[], int s0Len, float p[], float q[], int sup,
							   float s1[], float w1[]) {
		int n, k;
		int index;
		
		for(k=0; k<s0Len/2; k++) {
			s1[k] = 0;
			w1[k] = 0;
			for(n=0; n<sup; n++) {
				index = (n+2*k)%s0Len;
				s1[k] += p[n]*s0[index];
				w1[k] += q[n]*s0[index];
			}
		}
	}
	
	public static void iwavelet(float s1[], float w1[], int s1Len, float p[],
								float q[], int sup, float s0[]) {
		int n, k;
		int index, ofs;
		
		ofs = s1Len > 1024 ? s1Len : 1024;
		for(n=0; n<s1Len; n++) {
			s0[2*n+1] = 0;
			s0[2*n] = 0;
			for(k=0; k<sup/2; k++) {
				index = (n-k+ofs)%s1Len;
				s0[2*n+1] += p[2*k+1]*s1[index]+q[2*k+1]*w1[index];
				s0[2*n] += p[2*k]*s1[index]+q[2*k]*w1[index];
			}
		}
	}
	
	private static void rvmtx(float a[][], float b[][], int xsize, int ysize) {
		for(int j=0; j<ysize; j++) {
			for(int i=0; i<xsize; i++) {
				b[i][j] = a[j][i];
			}
		}
	}
	
	public static void wavelet2d(float s0[][], int s0Len, float s1[][],
								 float w1v[][], float w1h[][], float w1d[][]) {
		int i, j;
		
		float s1x[][] = new float[s0Len][];
		float w1x[][] = new float[s0Len][];
		for(i=0; i<s0Len; i++) {
			s1x[i] = new float[s0Len/2];
			w1x[i] = new float[s0Len/2];
		}
		
		float s1xt[][] = new float[s0Len/2][];
		float w1xt[][] = new float[s0Len/2][];
		for(i=0; i<s0Len/2; i++) {
			s1xt[i] = new float[s0Len];
			w1xt[i] = new float[s0Len];
		} 
		
		float s1t[][] = new float[s0Len/2][];
		float w1vt[][] = new float[s0Len/2][];
		float w1ht[][] = new float[s0Len/2][];
		float w1dt[][] = new float[s0Len/2][];
		for(i=0; i<s0Len/2; i++) {
			s1t[i] = new float[s0Len/2];
			w1vt[i] = new float[s0Len/2];
			w1ht[i] = new float[s0Len/2];
			w1dt[i] = new float[s0Len/2];	
		}
		
		int sup = 4;
		float p[] = new float[] {0.482962913145f, 0.836516303738f,
								 0.224143868042f, -0.129409522551f};
		float q[] = new float[4];
		for(i=0; i<sup; i++) q[i] = (float)Math.pow(-1, i)*p[sup-i-1];
		
		for(i=0; i<s0Len; i++) wavelet(s0[i], s0Len, p, q, sup, s1x[i], w1x[i]);
		rvmtx(s1x, s1xt, s0Len/2, s0Len);
		rvmtx(w1x, w1xt, s0Len/2, s0Len);
		
		for(i=0; i<s0Len/2; i++) {
			wavelet(s1xt[i], s0Len, p, q, sup, s1t[i], w1ht[i]);
			wavelet(w1xt[i], s0Len, p, q, sup, w1vt[i], w1dt[i]);
		}
		rvmtx(s1t, s1, s0Len/2, s0Len/2);
		rvmtx(w1ht, w1h, s0Len/2, s0Len/2);
		rvmtx(w1vt, w1v, s0Len/2, s0Len/2);
		rvmtx(w1dt, w1d, s0Len/2, s0Len/2);
	}
	
	public static void iwavelet2d(float s1[][], int s1Len, float w1v[][], float w1h[][], 
								  float w1d[][], float s0[][]) {
		int i, j;
		
		float s1xt[][] = new float[s1Len*2][];
		float w1xt[][] = new float[s1Len*2][];
		for(i=0; i<s1Len*2; i++) {
			s1xt[i] = new float[s1Len];
			w1xt[i] = new float[s1Len];
		}
		
		float s1x[][] = new float[s1Len][];
		float w1x[][] = new float[s1Len][];
		for(i=0; i<s1Len; i++) {
			s1x[i] = new float[s1Len*2];
			w1x[i] = new float[s1Len*2];
		} 
		
		float s1t[][] = new float[s1Len][];
		float w1vt[][] = new float[s1Len][];
		float w1ht[][] = new float[s1Len][];
		float w1dt[][] = new float[s1Len][];
		for(i=0; i<s1Len; i++) {
			s1t[i] = new float[s1Len];
			w1vt[i] = new float[s1Len];
			w1ht[i] = new float[s1Len];
			w1dt[i] = new float[s1Len];	
		}
		
		int sup = 4;
		float p[] = new float[] {0.482962913145f, 0.836516303738f,
								 0.224143868042f, -0.129409522551f};
		float q[] = new float[4];
		for(i=0; i<sup; i++) q[i] = (float)Math.pow(-1, i)*p[sup-i-1];
		
		rvmtx(s1, s1t, s1Len, s1Len);
		rvmtx(w1h, w1ht, s1Len, s1Len);
		rvmtx(w1v, w1vt, s1Len, s1Len);
		rvmtx(w1d, w1dt, s1Len, s1Len);	
		for(i=0; i<s1Len; i++) {
			iwavelet(s1t[i], w1ht[i], s1Len, p, q, sup, s1x[i]);
			iwavelet(w1vt[i], w1dt[i], s1Len, p, q, sup, w1x[i]);
		}
		
		rvmtx(s1x, s1xt, s1Len*2, s1Len);
		rvmtx(w1x, w1xt, s1Len*2, s1Len);
		for(i=0; i<s1Len*2; i++) iwavelet(s1xt[i], w1xt[i], s1Len, p, q, sup, s0[i]);
	}
	
	public static BufferedImage decompose(BufferedImage srcImage) {
		int i, j;
		int width = srcImage.getWidth();
		int height = srcImage.getHeight();
		int srcRGBs[] = srcImage.getRGB(0, 0, width, height, null, 0, width);
		int s0Len = width > height ? height : width;
		BufferedImage destImage = new BufferedImage(s0Len, s0Len, BufferedImage.TYPE_INT_RGB);
		
		float yhs[] = new float[3];
		float s0[][] = new float[s0Len][];
		for(i=0; i<s0Len; i++) s0[i] = new float[s0Len];
		for(i=0; i<s0Len; i++) {
			for(j=0; j<s0Len; j++) {
				ImageUtil.convertRGBToYHS(srcRGBs[i*width+j], yhs);
				s0[i][j] = yhs[0];
			}
		}
		
		float s1[][] = new float[s0Len/2][];
		float w1v[][] = new float[s0Len/2][];
		float w1h[][] = new float[s0Len/2][];
		float w1d[][] = new float[s0Len/2][];
		for(i=0; i<s0Len/2; i++) {
			s1[i] = new float[s0Len/2];
			w1v[i] = new float[s0Len/2];
			w1h[i] = new float[s0Len/2];
			w1d[i] = new float[s0Len/2];	
		}
		
		wavelet2d(s0, s0Len, s1, w1v, w1h, w1d);
		
		float max = 0, min = 500;
		float maxv = 0, minv = 500;
		float maxh = 0, minh = 500;
		float maxd = 0, mind = 500;
		for(i=0; i<s0Len/2; i++) {
			for(j=0; j<s0Len/2; j++) {
				if(max < s1[i][j]) max = s1[i][j];
				if(min > s1[i][j]) min = s1[i][j];
				
				if(maxv < w1v[i][j]) maxv = w1v[i][j];
				if(minv > w1v[i][j]) minv = w1v[i][j];
				
				if(maxh < w1h[i][j]) maxh = w1h[i][j];
				if(minh > w1h[i][j]) minh = w1h[i][j];
				
				if(maxd < w1d[i][j]) maxd = w1d[i][j];
				if(mind > w1d[i][j]) mind = w1d[i][j];
			}
		}
		
		int rgb[] = new int[3];
		for(i=0; i<s0Len/2; i++) {
			for(j=0; j<s0Len/2; j++) {
				ImageUtil.convertRGBToYHS(srcRGBs[i*2*width+j*2], yhs);	
				yhs[0] = (s1[i][j]-min)*255/(max-min);
				destImage.setRGB(j, i, ImageUtil.convertYHSToRGB(yhs));
				
				rgb[0] = (int)((w1h[i][j]-minh)*255/(maxh-minh));
				rgb[1] = rgb[2] = rgb[0];
				destImage.setRGB(j+s0Len/2, i, ImageUtil.encodeColor(rgb));
				
				rgb[0] = (int)((w1v[i][j]-minv)*255/(maxv-minv));
				rgb[1] = rgb[2] = rgb[0];
				destImage.setRGB(j, i+s0Len/2, ImageUtil.encodeColor(rgb));
				
				rgb[0] = (int)((w1d[i][j]-mind)*255/(maxd-mind));
				rgb[1] = rgb[2] = rgb[0];
				destImage.setRGB(j+s0Len/2, i+s0Len/2, ImageUtil.encodeColor(rgb));
			}
		}
		
		return destImage;
	}
	
	public static BufferedImage waterMark(BufferedImage srcImage) {
		int i, j;
		int width = srcImage.getWidth();
		int height = srcImage.getHeight();
		int s0Len = width > height ? height : width;
		j = 1;
		for(i=s0Len/2; i>0; i/=2) j *= 2;
		s0Len = j > 1 ? j : 0;
		
		int srcRGBs[] = srcImage.getRGB(0, 0, width, height, null, 0, width);
		BufferedImage destImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		
		float yhs[] = new float[3];
		float s0[][] = new float[s0Len][];
		for(i=0; i<s0Len; i++) s0[i] = new float[s0Len];
		for(i=0; i<s0Len; i++) {
			for(j=0; j<s0Len; j++) {
				ImageUtil.convertRGBToYHS(srcRGBs[i*width+j], yhs);
				s0[i][j] = yhs[0];
			}
		}
		
		float s1[][] = new float[s0Len/2][];
		float w1v[][] = new float[s0Len/2][];
		float w1h[][] = new float[s0Len/2][];
		float w1d[][] = new float[s0Len/2][];
		for(i=0; i<s0Len/2; i++) {
			s1[i] = new float[s0Len/2];
			w1v[i] = new float[s0Len/2];
			w1h[i] = new float[s0Len/2];
			w1d[i] = new float[s0Len/2];	
		}
		
		wavelet2d(s0, s0Len, s1, w1v, w1h, w1d);
		
		BufferedImage markImage = new BufferedImage(s0Len/2, s0Len/2, BufferedImage.TYPE_INT_RGB);
		Graphics g = markImage.getGraphics();
		g.setColor(Color.white);
		g.drawString("圖像教學演示 鄧飛", 10, s0Len/4);
		int []markRGBs = markImage.getRGB(0, 0, s0Len/2, s0Len/2, null, 0, s0Len/2);

		float maxd = 0, mind = 500;
		for(i=0; i<s0Len/2; i++) {
			for(j=0; j<s0Len/2; j++) {
				if(maxd < w1d[i][j]) maxd = w1d[i][j];
				if(mind > w1d[i][j]) mind = w1d[i][j];
			}
		}
		for(i=0; i<s0Len/2; i++) {
			for(j=0; j<s0Len/2; j++) {
				ImageUtil.convertRGBToYHS(markRGBs[i*s0Len/2+j], yhs);
				if(yhs[0] > 100) w1d[i][j] = maxd/2;
			}
		}
		iwavelet2d(s1, s0Len/2, w1v, w1h, w1d, s0);
		
		destImage.setRGB(0, 0, width, height, srcRGBs, 0, width);
		for(i=0; i<s0Len; i++) {
			for(j=0; j<s0Len; j++) {
				ImageUtil.convertRGBToYHS(srcRGBs[i*width+j], yhs);	
				yhs[0] = s0[i][j];
				destImage.setRGB(j, i, ImageUtil.convertYHSToRGB(yhs));
			}
		}
		
		return destImage;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里都是精品| 亚洲精品乱码久久久久久久久| 欧美国产成人精品| 亚洲高清久久久| 99久久婷婷国产综合精品电影| 欧美日本一区二区| 国产精品理论在线观看| 久久精品国产999大香线蕉| 一本一本久久a久久精品综合麻豆| 精品久久久久久久久久久久包黑料 | 精品一区二区在线播放| 欧美无砖砖区免费| 亚洲视频一二三| 国产高清无密码一区二区三区| 欧美日韩在线免费视频| 成人欧美一区二区三区白人| 国产一区999| 欧美变态tickle挠乳网站| 亚洲香肠在线观看| 色拍拍在线精品视频8848| 中文字幕一区二区三| 国产黄色91视频| 精品国产乱码久久| 免费一级片91| 日韩欧美一级二级| 老汉av免费一区二区三区| 欧美精品视频www在线观看| 亚洲一区二区三区在线| 在线免费视频一区二区| 亚洲黄一区二区三区| 91亚洲精华国产精华精华液| 日韩毛片精品高清免费| 91免费国产视频网站| 中文字幕在线观看一区二区| jlzzjlzz亚洲女人18| 国产精品理伦片| 99久久久无码国产精品| 中文字幕成人av| 99久久精品费精品国产一区二区| 国产精品电影一区二区| 91美女蜜桃在线| 亚洲影院理伦片| 欧美一级二级在线观看| 麻豆精品精品国产自在97香蕉| 精品国产91洋老外米糕| 国产福利不卡视频| 中文字幕在线观看不卡视频| 在线看日韩精品电影| 日韩中文字幕麻豆| 精品国产乱码久久久久久夜甘婷婷| 精品一区二区三区日韩| 国产欧美精品一区二区色综合 | 亚洲综合一二区| 538在线一区二区精品国产| 美日韩一区二区| 国产精品视频看| 在线观看日韩电影| 精品影院一区二区久久久| 国产日韩欧美精品一区| 色美美综合视频| 日本美女视频一区二区| 国产网红主播福利一区二区| 91成人看片片| 久久99精品一区二区三区三区| 中文在线资源观看网站视频免费不卡| 欧美自拍丝袜亚洲| 国产综合久久久久久鬼色| 亚洲免费观看高清完整版在线观看熊 | 93久久精品日日躁夜夜躁欧美| 亚洲一区二区三区四区在线免费观看| 日韩欧美一级片| 色呦呦国产精品| 精品在线播放午夜| 艳妇臀荡乳欲伦亚洲一区| 日韩精品一区二区三区三区免费| 成人黄色777网| 日本欧美一区二区在线观看| 日本一二三四高清不卡| 91精品国产综合久久香蕉麻豆| 成人黄色777网| 久久精工是国产品牌吗| 一区二区三区在线视频播放| 精品电影一区二区| 91福利国产成人精品照片| 国产一区二区三区不卡在线观看 | 91精品一区二区三区久久久久久| 成人综合在线观看| 久久精品国产99| 三级欧美在线一区| 亚洲精品少妇30p| 国产日韩精品一区二区三区在线| 欧美精选午夜久久久乱码6080| 99视频在线精品| 国产伦精品一区二区三区视频青涩| 午夜视频一区二区三区| 亚洲四区在线观看| 中文字幕欧美区| 国产亚洲综合色| 久久久久久久久99精品| 日韩一卡二卡三卡四卡| 9191久久久久久久久久久| 在线视频观看一区| 91麻豆成人久久精品二区三区| 国产成+人+日韩+欧美+亚洲| 麻豆精品精品国产自在97香蕉| 视频一区免费在线观看| 亚洲午夜精品在线| 亚洲国产一二三| 亚洲一二三专区| 亚洲一区二区在线免费看| 亚洲人成网站在线| 亚洲激情图片小说视频| 亚洲欧美日韩人成在线播放| 最新不卡av在线| 亚洲欧美日韩国产另类专区| 亚洲欧美偷拍卡通变态| 亚洲靠逼com| 亚洲精品精品亚洲| 亚洲一区二区三区在线看| 亚洲成av人片在www色猫咪| 亚洲mv在线观看| 久久99精品久久久久久国产越南 | 国产亚洲欧美一级| 欧美另类久久久品| 欧美色精品在线视频| 欧美另类videos死尸| 欧美精品黑人性xxxx| 欧美日韩二区三区| 欧美一区二区三区在线视频| 日韩午夜精品电影| 久久亚区不卡日本| 国产精品亲子乱子伦xxxx裸| 亚洲欧美日韩国产手机在线| 亚洲在线中文字幕| 日韩经典一区二区| 黄色资源网久久资源365| 国产专区欧美精品| 99视频有精品| 欧美久久一二三四区| 日韩美女在线视频| 国产午夜精品美女毛片视频| 亚洲天堂成人在线观看| 亚洲gay无套男同| 国产美女在线精品| 色综合久久综合网97色综合| 欧美日韩国产一区二区三区地区| 26uuu久久天堂性欧美| 国产精品黄色在线观看| 视频一区国产视频| 本田岬高潮一区二区三区| 欧美亚洲国产一卡| 久久久综合激的五月天| 亚洲精品你懂的| 国产米奇在线777精品观看| 99国产精品久久久久久久久久久| 在线播放欧美女士性生活| 欧美国产日韩在线观看| 天天影视色香欲综合网老头| 日本中文在线一区| 波多野结衣中文字幕一区| 欧美日韩高清一区二区三区| 日本一区二区免费在线| 午夜精品一区在线观看| 成人动漫一区二区在线| 91精品国产黑色紧身裤美女| 综合久久综合久久| 国产米奇在线777精品观看| 欧美日韩视频不卡| 亚洲欧美日韩人成在线播放| 激情国产一区二区| 制服丝袜亚洲播放| 一区二区三区四区在线播放| 国产成人精品影视| 欧美xingq一区二区| 一区二区三区电影在线播| 成人动漫av在线| 久久精品一区二区三区不卡牛牛| 丝袜脚交一区二区| 色老综合老女人久久久| 国产精品区一区二区三区| 韩国成人精品a∨在线观看| 欧美三级电影网| 亚洲一区二区高清| 色欧美片视频在线观看在线视频| 欧美经典三级视频一区二区三区| 韩国成人精品a∨在线观看| 91麻豆精品国产91久久久资源速度 | 欧美精品一区二区蜜臀亚洲| 婷婷国产在线综合| 欧洲亚洲精品在线| 综合在线观看色| 东方aⅴ免费观看久久av| 久久影院午夜片一区| 麻豆精品新av中文字幕| 欧美一区二区三区免费视频| 五月婷婷欧美视频| 欧美手机在线视频| 午夜电影网一区| 日韩欧美一级二级三级久久久| 日本 国产 欧美色综合|