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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? blobdetection.java

?? 自已用MATLAB寫的一個(gè)blob Detection
?? JAVA
字號(hào):
package blobDetection;

import java.lang.reflect.*;

//==================================================
//class BlobDetection
//==================================================
public class BlobDetection extends EdgeDetection
{
	// Temp
	Object	parent;
	Method 	filterBlobMethod;
	// Temp
	
	public static int        	blobMaxNumber = 1000;
	public int        			blobNumber;
	public Blob[]     			blob;
	public boolean[]  			gridVisited;

	public int					blobWidthMin, blobHeightMin;
	
//	--------------------------------------------
// Constructor
//	--------------------------------------------
public BlobDetection(int imgWidth, int imgHeight)
{
  super(imgWidth, imgHeight);
  
  gridVisited   = new boolean[nbGridValue];
  blob         	= new Blob[blobMaxNumber];
  blobNumber   	= 0;
  for (int i=0 ; i<blobMaxNumber;i++) 
  		blob[i] = new Blob(this); 

  blobWidthMin	= 0;
  blobHeightMin	= 0;
  
  filterBlobMethod = null;
}

//--------------------------------------------
// setBlobDimensionMin()
//--------------------------------------------
/*
public void setBlobDimensionMin(int w, int h)
{
  if (w<0) w=0;
  if (h<0) h=0;
  if (w>imgWidth) w=imgWidth;
  if (h>imgHeight) h=imgHeight;
  
  blobWidthMin	= w;
  blobHeightMin	= h;
}
*/
//--------------------------------------------
// setNumberBlobMax()
//--------------------------------------------
public void setBlobMaxNumber(int nb)
{
	blobMaxNumber = nb;
}

//--------------------------------------------
// getBlob()
//--------------------------------------------
public Blob getBlob(int n)
{
	Blob b=null;
	if (n<blobNumber)
		return blob[n];
	return b;
}

//--------------------------------------------
// getBlobNb()
//--------------------------------------------
public int getBlobNb()
{
	return blobNumber;
}

//--------------------------------------------
// computeBlobs()
//--------------------------------------------
public void computeBlobs(int[] pixels)
{
	// Image
	setImage(pixels);
	
     // Clear gridVisited
     for (int i=0 ; i<nbGridValue; i++) 
     	gridVisited[i]=false;
	
     // Compute Isovalue
	computeIsovalue();
	
     // Get Lines indices
	int		x,y,squareIndex,n;
	int		iEdge;
	int		offx, offy, offAB;
	int		toCompute;
	int		offset;
	float	t;
	float	vx,vy;

	nbLineToDraw 	= 0;
	vx	     		= 0.0f;
    blobNumber   	= 0;
	for (x=0 ; x<resx-1 ; x++)
	{
		vy = 0.0f;
		for (y=0 ; y<resy-1 ; y++)
		{
			 // > offset in the grid
			offset		= x + resx*y;

	         // > if we were already there, just go the next square!
            if (gridVisited[offset] == true) continue;
                     
             // > squareIndex
			squareIndex     = getSquareIndex(x,y);

             // >Found something
			 if (squareIndex > 0 && squareIndex < 15)
			 {
			 	if (blobNumber < blobMaxNumber)
			 	{
					   findBlob(blobNumber,x,y);
						 blobNumber++;
			 		
			 	}
			 }
			vy += stepy;
		}	// for y
		vx += stepx;
	}	// for x
	nbLineToDraw /= 2;
	//blobNumber+=1;
}

//--------------------------------------------
// findBlob()
//--------------------------------------------
public void findBlob(int iBlob, int x, int y)
{
	 // Reset Blob values

	blob[iBlob].id     = iBlob; 
	 blob[iBlob].xMin   =  1000.0f;
	 blob[iBlob].xMax   =  -1000.0f;
	 blob[iBlob].yMin   =  1000.0f;
	 blob[iBlob].yMax   =  -1000.0f;
	 blob[iBlob].nbLine = 0; 

	
	 // Find it !!    
	computeEdgeVertex(iBlob, x,y);
	{
	
	 // > This is just a temp patch (somtimes 'big' blobs are detected on the grid edges)

	 if (blob[iBlob].xMin>=1000.0f || blob[iBlob].xMax<=-1000.0f || blob[iBlob].yMin>=1000.0f || blob[iBlob].yMax<=-1000.0f)
	   blobNumber--;    
	 else  
	 {
		blob[iBlob].update();
        // User Filter
		if (filterBlobMethod != null)
        {
        	try 
			{
        		Boolean returnObj = (Boolean)(filterBlobMethod.invoke(parent, new Object[]{ blob[iBlob] } ));
        		boolean returnValue = returnObj.booleanValue();
        		if (returnValue == false) blobNumber--;    
			} 
        	catch (Exception e) 
			{
				System.out.println("Disabling filterBlobMethod() because of an error.");
				filterBlobMethod = null;
			}
        }
	  }

	}


}

//--------------------------------------------
// computeEdgeVertex()
//--------------------------------------------
void computeEdgeVertex(int iBlob, int x, int y)
{
	 // offset
	 int offset = x+resx*y;
	 
	 // Mark voxel as visited
	 if (gridVisited[offset] == true) return;
	 gridVisited[offset]=true;    
	
	 // 
	 int   iEdge, offx, offy, offAB;
	 int[] edgeOffsetInfo;
	 int   squareIndex     = getSquareIndex(x,y);
	 float vx = (float)x*stepx;
	 float vy = (float)y*stepy;
	 
	 int   n = 0;
	 while ( (iEdge = MetaballsTable.edgeCut[squareIndex][n++]) != -1)
	 {
		edgeOffsetInfo  = MetaballsTable.edgeOffsetInfo[iEdge];
		offx			= edgeOffsetInfo[0];
		offy			= edgeOffsetInfo[1];
		offAB			= edgeOffsetInfo[2];
	
	    if (blob[iBlob].nbLine < Blob.MAX_NBLINE) 
	    	lineToDraw[nbLineToDraw++] = blob[iBlob].line[blob[iBlob].nbLine++] = voxel[(x+offx) + resx*(y+offy)] + offAB;
	    else
	    	return;
	 }
	 
	 int   toCompute = MetaballsTable.edgeToCompute[squareIndex];
	 float t = 0.0f;
	 float value = 0.0f;
	 if (toCompute>0)
	 {
	   if ( (toCompute & 1) > 0) // Edge 0
	   {
	   		t	= (isovalue - gridValue[offset]) / (gridValue[offset+1] - gridValue[offset]); 
			value   = vx*(1.0f-t) + t*(vx+stepx); 
			edgeVrt[voxel[offset]].x = value;
	     
			if (value < blob[iBlob].xMin ) blob[iBlob].xMin = value;
			if (value > blob[iBlob].xMax ) blob[iBlob].xMax = value;
	      
	   }
	   if ( (toCompute & 2) > 0) // Edge 3
	   {
	   		t	= (isovalue - gridValue[offset]) / (gridValue[offset+resx] - gridValue[offset]); 
	   		value   = vy*(1.0f-t) + t*(vy+stepy);
	   		edgeVrt[voxel[offset]+1].y = value;
	     
	   		if (value < blob[iBlob].yMin ) blob[iBlob].yMin = value;
	   		if (value > blob[iBlob].yMax ) blob[iBlob].yMax = value;
	
	   }
				
	 } // toCompute
	
	 // Propagate to neightbors : use of Metaballs.neighborsTable 
	 byte neighborVoxel = MetaballsTable.neightborVoxel[squareIndex];    
	 if (x<resx-2   && (neighborVoxel & (1<<0))>0)        computeEdgeVertex(iBlob, x+1,y);
	 if (x>0        && (neighborVoxel & (1<<1))>0)        computeEdgeVertex(iBlob, x-1,y);
	 if (y<resy-2   && (neighborVoxel & (1<<2))>0)        computeEdgeVertex(iBlob, x,y+1);
	 if (y>0        && (neighborVoxel & (1<<3))>0)        computeEdgeVertex(iBlob, x,y-1);
 
}

//--------------------------------------------
// filterBlob()
//--------------------------------------------
/*
public boolean acceptBlob(Blob b)
{
	if ( (b.w*imgWidth>=blobWidthMin) || (b.h*imgHeight>=blobHeightMin) )
		return true;
	return false;
}
*/
//--------------------------------------------
// activeCustomFilter
//--------------------------------------------
public void activeCustomFilter(Object parent)
{
	this.parent = parent;
	  try 
	  {
	  	filterBlobMethod = parent.getClass().getMethod("newBlobDetectedEvent", new Class[] { Blob.class });
      	//System.out.println("newBlobDetectedEvent found!");
      } catch (Exception e) 
	  {
      	//System.out.println("no such metho or error");
        // no such method, or an error.. which is fine, just ignore
      }
}

};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内成人免费视频| 免费高清成人在线| 日韩精品自拍偷拍| 成人高清在线视频| 日韩高清一区在线| 国产精品白丝在线| 欧美一区二区三区免费大片| 欧美刺激午夜性久久久久久久| 91色婷婷久久久久合中文| 欧美精品18+| 国产精品久久久久一区二区三区 | 久久久久久99久久久精品网站| 国产精品99久久久久久有的能看| 亚洲国产综合在线| 国产精品女上位| 精品欧美黑人一区二区三区| 欧美三级资源在线| 91尤物视频在线观看| 国产精品一区二区免费不卡| 日本不卡一二三区黄网| 亚洲成人福利片| 亚洲欧美乱综合| 亚洲欧美综合在线精品| 国产女同互慰高潮91漫画| 日韩午夜av一区| 7777精品伊人久久久大香线蕉的 | 精品国产伦一区二区三区观看方式 | 亚洲第一久久影院| 亚洲人午夜精品天堂一二香蕉| 国产人成亚洲第一网站在线播放| 日韩女优av电影在线观看| 欧美精品18+| 欧美一区二区网站| 91精品国产91久久综合桃花| 欧美亚洲图片小说| 欧美色图在线观看| 欧美体内she精高潮| 91成人看片片| 欧美午夜免费电影| 欧美日韩成人激情| 91精品国产91久久综合桃花| 日韩午夜电影在线观看| 精品国产成人系列| 久久亚洲综合av| 久久精品夜色噜噜亚洲aⅴ| 国产日韩欧美综合在线| 国产女主播视频一区二区| 中文一区二区完整视频在线观看| 中文字幕 久热精品 视频在线 | 国产综合色精品一区二区三区| 老司机午夜精品99久久| 国产一区二区三区在线看麻豆| 久久爱另类一区二区小说| 黑人巨大精品欧美一区| 国产精品自拍网站| 国产老肥熟一区二区三区| 成人午夜视频网站| 91小宝寻花一区二区三区| 在线一区二区视频| 91精品国产欧美一区二区18 | 粉嫩13p一区二区三区| 国产电影精品久久禁18| 91论坛在线播放| 欧美日本国产视频| 精品福利av导航| 中文字幕一区av| 亚洲国产精品久久艾草纯爱| 免费成人美女在线观看| 国产精品亚洲综合一区在线观看| 99久久亚洲一区二区三区青草| 欧美在线你懂得| 欧美岛国在线观看| 国产精品久久久久久久久免费丝袜| 亚洲午夜成aⅴ人片| 另类小说视频一区二区| 91女人视频在线观看| 在线成人免费视频| 中文字幕第一区第二区| 午夜精品福利一区二区三区av | 精品奇米国产一区二区三区| 欧美国产日韩精品免费观看| 亚洲精品国产精华液| 日本不卡一区二区三区| 成人永久aaa| 欧美日韩你懂得| 日本一区二区免费在线观看视频| 亚洲国产视频a| 国产精品123| 欧美顶级少妇做爰| 亚洲欧美aⅴ...| 精品亚洲porn| 欧美性猛交xxxx黑人交| 国产人成亚洲第一网站在线播放| 亚洲高清三级视频| 成人妖精视频yjsp地址| 日韩一区二区免费电影| 一区二区三区四区av| 国产福利一区二区三区视频在线| 欧美亚洲免费在线一区| 国产精品免费aⅴ片在线观看| 丝袜脚交一区二区| 91碰在线视频| 国产精品福利影院| 久久99国产精品久久99果冻传媒| 欧美中文字幕一二三区视频| 国产欧美日韩精品a在线观看| 五月综合激情网| 色哟哟欧美精品| 久久精品视频在线看| 日本在线不卡视频| 欧美综合一区二区三区| 国产精品成人免费| 成人中文字幕电影| 久久久一区二区三区| 奇米精品一区二区三区在线观看 | 91丨porny丨中文| 国产女主播视频一区二区| 久久电影网站中文字幕| 欧美一区二区三区四区高清| 亚洲宅男天堂在线观看无病毒| 99精品视频在线观看| 中文在线一区二区| 福利一区二区在线| 国产日韩欧美一区二区三区综合| 久久激情五月婷婷| 日韩区在线观看| 日产国产高清一区二区三区| 欧美精品在欧美一区二区少妇| 夜夜爽夜夜爽精品视频| 99久久婷婷国产综合精品| 中文字幕中文乱码欧美一区二区| 国产成人小视频| 国产日韩欧美不卡| 成人免费福利片| 国产精品伦一区二区三级视频| 国产69精品一区二区亚洲孕妇| 国产女同性恋一区二区| 不卡一区二区在线| 中文字幕色av一区二区三区| 粉嫩一区二区三区在线看| 欧美国产日韩a欧美在线观看| 岛国一区二区在线观看| 国产精品福利一区二区三区| 色综合一个色综合| 亚洲观看高清完整版在线观看| 欧美男人的天堂一二区| 五月综合激情婷婷六月色窝| 日韩一区二区三区在线视频| 韩国女主播一区二区三区| 久久久精品中文字幕麻豆发布| 国产iv一区二区三区| 国产精品家庭影院| 91久久线看在观草草青青| 亚洲电影激情视频网站| 欧美成人精品福利| 国产成人综合亚洲网站| 亚洲欧洲一区二区三区| 欧美影院一区二区三区| 三级久久三级久久| 精品国产免费一区二区三区四区| 国产精品综合二区| 亚洲精品视频免费看| 69成人精品免费视频| 激情综合色播激情啊| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产乱色国产精品免费视频| 日本一二三四高清不卡| 欧美亚州韩日在线看免费版国语版| 日韩精品91亚洲二区在线观看| 久久午夜老司机| 色综合久久综合网欧美综合网| 亚洲一区二区三区三| 精品国产sm最大网站免费看| 91看片淫黄大片一级在线观看| 人人超碰91尤物精品国产| 欧美高清在线一区| 欧美日韩国产综合一区二区| 经典三级一区二区| 亚洲裸体xxx| 精品国产99国产精品| 色噜噜狠狠一区二区三区果冻| 乱一区二区av| 亚洲精品国产一区二区精华液| 日韩视频在线一区二区| 97精品电影院| 韩国一区二区三区| 亚洲国产成人porn| 国产精品色哟哟| 日韩三级在线观看| 91福利精品第一导航| 国产成人免费在线视频| 午夜精品久久久久久不卡8050 | 久久国内精品视频| 亚洲乱码国产乱码精品精小说 | 成人免费看视频| 日本成人中文字幕| 一区二区三区四区在线| 久久久久久99久久久精品网站| 欧美疯狂做受xxxx富婆| 色婷婷综合激情|