private static List<Point[]> translateAlphaToPoints(boolean[][] imageInformation, int width, int height) {
		int[][] label = new int[width][height];
		
		Map<Integer, Integer> mergeLabels = new HashMap<Integer, Integer>();
		List<List<Point>> unstructuredPolygonPointList = new ArrayList<List<Point>>();
		unstructuredPolygonPointList.add(null);		//label 0: background
		unstructuredPolygonPointList.add(null);		//label 1: relevant information, ignore label 1
		int labelCount = 1;
		
		for(int y = 0; y < height; y++){
			for(int x = 0; x < width; x++){
				if(!imageInformation[x][y])
					continue;
					
				Point labelInfo = getLabel(labelCount, label, x, y);
				label[x][y] = labelInfo.x;
				
				if(labelInfo.y < 0 ){
					int remapValue = labelInfo.x;
					for(Integer key : mergeLabels.keySet())
						if(key.equals(labelInfo.x))
							remapValue = mergeLabels.get(key);
					
					mergeLabels.put(-labelInfo.y, remapValue);
				}
				
				if(labelInfo.y == 1) {
					labelCount++;
					mergeLabels.put(labelInfo.x, labelInfo.x);
				}
				
				//add to list, depending on label
				List<Point> addList = unstructuredPolygonPointList.size() > label[x][y] ? unstructuredPolygonPointList.remove(label[x][y]) : new LinkedList<Point>();
				
				addList.add(new Point(x,y));
				unstructuredPolygonPointList.add(label[x][y], addList);
			}
		}	
		
//		 System.out.println("labelCount "+labelCount);
//         for(int y = 0; y < height; y++){
//                 for(int x = 0; x < width; x++)
//                         System.out.print(label[x][y] < 10 ? label[x][y]+"  " : label[x][y]+" ");
//                 System.out.println(" ");
//         }           
		
		
		//merge Lists depending on mergeLabels (x to y)	
		return mergePolygonPointList(labelCount, mergeLabels, unstructuredPolygonPointList);
	}