Commit c40c2e9e authored by Andrey Filippov's avatar Andrey Filippov
Browse files

adding sennor_port to Eyesis correction

parent 200313d9
Loading
Loading
Loading
Loading
+51 −0
Original line number Original line Diff line number Diff line
@@ -25,10 +25,14 @@
**
**
*/
*/
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Rectangle;
import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import java.util.BitSet;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicInteger;
@@ -147,6 +151,8 @@ public class PixelMapping {
    	return (this.sensors != null) && (channel>=0)  && (channel<this.sensors.length) && (this.sensors[channel]!=null);
    	return (this.sensors != null) && (channel>=0)  && (channel<this.sensors.length) && (this.sensors[channel]!=null);
    }
    }
/*
    
    public int [] channelsForSubCamera(int subCamera){
    public int [] channelsForSubCamera(int subCamera){
    	if (this.sensors == null) return null;
    	if (this.sensors == null) return null;
    	int numChannels=0;
    	int numChannels=0;
@@ -156,6 +162,51 @@ public class PixelMapping {
    	for (int i=0;i<this.sensors.length;i++) if ((this.sensors[i]!=null) &&(this.sensors[i].subcamera==subCamera)) result[numChannels++]=i;
    	for (int i=0;i<this.sensors.length;i++) if ((this.sensors[i]!=null) &&(this.sensors[i].subcamera==subCamera)) result[numChannels++]=i;
    	return result;
    	return result;
    }
    }
    
 */
    // Updating for nc393. subCamera here is 0..9 for Eyesis4pi393 - 0-based index of the file, so it combines physical camera (separate IP)
    // as stored in "subcamera" field of the calibration file and "sensor_port". sensor_port may start from non-0, so we need to count all combinations
    
    public int [] channelsForSubCamera(int subCamera){
//    	ArrayList<ArrayList<ArrayList<Integer>>> camera_IPs = new ArrayList<ArrayList<ArrayList<Integer>>>(); 
    	ArrayList<Point> cam_port = new ArrayList<Point>();
    	for (int i=0;i<this.sensors.length;i++)  if (this.sensors[i]!=null) {
    		Point cp = new Point(this.sensors[i].subcamera, this.sensors[i].sensor_port);
    		if (!cam_port.contains(cp)){
    			cam_port.add(cp);
    		}
    	}
    	Point [] cam_port_arr = cam_port.toArray(new Point[0]);
		Arrays.sort(cam_port_arr, new Comparator<Point>() {
			@Override
			public int compare(Point o1, Point o2) {
				return (o1.x>o2.x)? 1:((o1.x < o2.x)?-1:(o1.y > o2.y)? 1:((o1.y < o2.y)?-1:0)); 
			}
		});
		for (int i=0; i<cam_port_arr.length;i++){
			System.out.println("----- physical camera #"+cam_port_arr[i].x+", sensor_port="+cam_port_arr[i].y);
		}
		System.out.println("----- This ("+subCamera+") physical camera #"+cam_port_arr[subCamera].x+", sensor_port="+cam_port_arr[subCamera].y);
		
		if (subCamera >= cam_port_arr.length) {
			System.out.println("Error: Subcamera "+subCamera+" > that total namera of sensor ports in the system = "+cam_port_arr.length);
			return null; 
		}
    	if (this.sensors == null) return null;
    	int numChannels=0;
    	for (int i=0;i<this.sensors.length;i++) if (this.sensors[i]!=null) {
    		if (new Point(this.sensors[i].subcamera, this.sensors[i].sensor_port).equals(cam_port_arr[subCamera])) numChannels++;
    	}
    	int [] result=new int [numChannels];
    	numChannels=0;
    	for (int i=0;i<this.sensors.length;i++) if (this.sensors[i]!=null){
    		if (new Point(this.sensors[i].subcamera, this.sensors[i].sensor_port).equals(cam_port_arr[subCamera])) result[numChannels++]=i;
    	}
    	return result;
    }
    
    
    
    public void removeChannel(int channel){
    public void removeChannel(int channel){
    	if ((this.sensors != null) && (channel>=0)  && (channel<this.sensors.length)) this.sensors[channel]=null;
    	if ((this.sensors != null) && (channel>=0)  && (channel<this.sensors.length)) this.sensors[channel]=null;
    }
    }