Hello!

To see the file structure, click on "tree".

Note that updates take place every 10 minutes, commits may not be seen immediately.
Separated out the SegmentationObject from SegmentationMask. Done by Nikhil.
authorlingutln <lingutln@localhost>
Thu, 12 Jan 2012 23:40:35 +0000 (23:40 +0000)
committerlingutln <lingutln@localhost>
Thu, 12 Jan 2012 23:40:35 +0000 (23:40 +0000)
svn path=/; revision=262

Annotation/src/ie/dcu/apps/ist/views/SegmentationView.java
Annotation/src/ie/dcu/apps/ist/widgets/AnnotatedImageControl.java
Annotation/src/ie/dcu/segment/SegmentationContext.java
Annotation/src/ie/dcu/segment/SegmentationMask.java
Annotation/src/ie/dcu/segment/SegmentationObject.java [new file with mode: 0644]
Annotation/src/ie/dcu/segment/painters/CombinedPainter.java

index af34230d4307140f6dac0f9caa145973a7874e63..dc688bee405a711310f6b3397a9d11719893141e 100644 (file)
@@ -833,7 +833,7 @@ public class SegmentationView extends Composite {
                        Tool.ZoomBestFit.action.setEnabled(canZoomBestFit());
                        if(view.getContext() != null)
                        {
-                               comboLabel.setEnabled((view.getContext().getMasks().size() > 0));
+                               comboLabel.setEnabled((view.getContext().getSegmentObjects().size() > 0));
                        }
                        else
                        {
index 3a8df3980b9d9a517ee7f9f3d702448a33bf98b5..ffc85e112b6ffeadb79317c14e464b582602c625 100644 (file)
@@ -436,7 +436,7 @@ public class AnnotatedImageControl extends Composite {
                        {
                                if(view.imageContains(mouseClickedPoint))
                                {
-                                       ctx.enableClickedSegment(view.canvasToImage(mouseClickedPoint));
+                                       enableClickedSegment(view.canvasToImage(mouseClickedPoint));
                                }
                                repaint();
                        }
index d5a5b0e57ca20cae0d3927273bc9c8d91a89e7e1..51831f2191594ccd00913719b0e45b7dbd57e364 100644 (file)
@@ -50,11 +50,11 @@ public class SegmentationContext {
        /**
         * For storing independent Segmentation objects
         */
-       private ArrayList<SegmentationMask> segmentationMaskObjects;
+       private ArrayList<SegmentationMask> segmentationObjects;
        
        // lazy create (use getters for these fields)
        private AnnotationManager annotations;
-       private SegmentationMask segmentationMask;
+       private SegmentationObject segmentObject;
        private Image image;
        private Rectangle bounds;
 
@@ -70,7 +70,7 @@ public class SegmentationContext {
        private SegmentationContext(ImageData imageData, File file) {
                this.imageData = imageData;
                this.file = file;
-               segmentationMaskObjects = new ArrayList<SegmentationMask>();
+               segmentationObjects = new ArrayList<SegmentationMask>();
        }
 
        /**
@@ -144,33 +144,31 @@ public class SegmentationContext {
                // Makes needsHighlighting <code>False</code> for all the previous segments.
                disableAllSegments(false);
                // Set needsHighlighting <code>True</code> for the current segment.
-               segmentationMask.enabled = true;
-               segmentationMaskObjects.add(segmentationMask);
+               segmentObject.enabled = true;
+               segmentationObjects.add(segmentObject);
                
                // Making a new segmentationObject after storing the current SegmentationObject
-               segmentationMask = null;
+               segmentObject = null;
                annotations.clear();
        }
        
        /**
-        * Returns the current segmentation mask which has not yet been made into an object.
-        * 
-        * @return A {@link SegmentationMask} instance. Returns the latest mask which hasn't yet turned into an object.
+        * @return A {@link SegmentationObject} instance. Returns the latest mask which hasn't yet turned into an object.
         */
        public SegmentationMask getMask() {
-               if (segmentationMask == null) {
-                       segmentationMask = new SegmentationMask(getBounds());
+               if (segmentObject == null) {
+                       segmentObject = new SegmentationObject(getBounds());
                }
-               return segmentationMask;
+               return segmentObject;
        }
        /**
         * All the masks excluding the current mask (i.e the mask which has not yet been made into a Segmentation object)
         * @return
         * A list of SegmentationMasks excluding the current mask which has not yet been made into a Segmentation object 
         */
-       public ArrayList<SegmentationMask> getMasks() {
+       public ArrayList<SegmentationMask> getSegmentObjects() {
                
-               return segmentationMaskObjects;
+               return segmentationObjects;
        }
        
        /**
@@ -180,22 +178,27 @@ public class SegmentationContext {
         */
        public void enableClickedSegment(Point mouseClickedPoint) {
                
-               for(SegmentationMask segmentMaskObject : segmentationMaskObjects)
+               for(SegmentationMask segmentMaskObject : segmentationObjects)
                {
                        if(segmentMaskObject.getPixel(mouseClickedPoint.x, mouseClickedPoint.y) == 1)
                        {
                                // Disable all previous segments
                                disableAllSegments(false);
                                // Enable the currently clicked segment.
-                               segmentMaskObject.enabled = true;
+                               segmentObject.enabled = true;
                        }
                }
        }
                
        public void disableAllSegments(boolean value)
        {
-               for(SegmentationMask maskObject : segmentationMaskObjects)
-                       maskObject.enabled = value;
+               for(SegmentationMask segmentObject : segmentationObjects)
+               {
+                       if(segmentObject instanceof ie.dcu.segment.SegmentationObject)
+                       {
+                               ((ie.dcu.segment.SegmentationObject)segmentObject).enabled = value;
+                       }
+               }       
        }
        
        /**
@@ -347,7 +350,7 @@ public class SegmentationContext {
                        new FileInputStream(file)));
 
                ImageData imageData = null;
-               SegmentationMask segmentMaskObject = null;
+               SegmentationObject segmentObject = null;
                AnnotationManager annotations = null;
 
                try {
@@ -360,7 +363,7 @@ public class SegmentationContext {
                                        imageData = SwtUtils.loadImageData(in);
 
                                } else if (name.equals("mask.png")) {
-                                       segmentMaskObject = SegmentationMask.read(in);
+                                       //segmentObject = (SegmentationObject) SegmentationMask.read(in);
 
                                } else if (name.equals("markup.dat")) {
                                        annotations = new AnnotationManager();
@@ -378,7 +381,7 @@ public class SegmentationContext {
                        throw new IOException("No image found in context file");
                }
 
-               if (segmentMaskObject == null) {
+               if (segmentObject == null) {
                        throw new IOException("No mask found in context file");
                }
 
@@ -388,7 +391,7 @@ public class SegmentationContext {
 
                SegmentationContext ctx = new SegmentationContext(imageData, file);
 
-               ctx.segmentationMask = segmentMaskObject;
+               ctx.segmentObject = segmentObject;
                ctx.annotations = annotations;
 
                return ctx;
index 7252996158f2264457f5c8980fb3c40a786622d5..56bfacb9d88ad866bb95fb29df0d90067cda9dc0 100644 (file)
@@ -48,21 +48,6 @@ public class SegmentationMask extends ByteMatrix{
         */
        public final int width;
        
-       /**
-        * The total number of layers formed.
-        */
-       public static int numberOfLayers;
-       
-       /**
-        * The layering number of the segmentation mask.
-        */
-       public int layerNumber;
-       
-       /**
-        * Whether the segment needs to be enabled(highlighted) or not ?
-        */
-       public boolean enabled;
-
        /**
         * The height of the segmentation mask.
         */
@@ -81,8 +66,6 @@ public class SegmentationMask extends ByteMatrix{
                super(height, width);
                this.width = width;
                this.height = height;
-               this.layerNumber = ++numberOfLayers;
-               this.enabled = false;
                clear();
        }
        
diff --git a/Annotation/src/ie/dcu/segment/SegmentationObject.java b/Annotation/src/ie/dcu/segment/SegmentationObject.java
new file mode 100644 (file)
index 0000000..a835d84
--- /dev/null
@@ -0,0 +1,42 @@
+package ie.dcu.segment;
+
+import org.eclipse.swt.graphics.Rectangle;
+
+
+/**
+ * Class that represents a independent segmentation mask.
+ * 
+ * A segmentation mask is a two dimensional matrix of byte values. It is used
+ * to represents which pixels in an image that are part of the foreground, and 
+ * which are part of the background.
+ * 
+ * @author Nikhil
+ */
+
+public final class SegmentationObject extends SegmentationMask{
+
+       private static final long serialVersionUID = 8321845179859248904L;
+       
+       //The total number of layers formed.
+       public static int numberOfLayers;
+       
+       //The layering number of the segmentation mask.
+       public int layerNumber;
+       
+       //Whether the segment needs to be enabled(highlighted) or not ?
+       public boolean enabled;
+       
+       public SegmentationObject(int width, int height) {
+               super(width, height);
+               this.layerNumber = ++numberOfLayers;
+               this.enabled = false;
+               // TODO Auto-generated constructor stub
+       }
+       
+       public SegmentationObject(Rectangle bounds) {
+               this(bounds.width, bounds.height);
+               // TODO Auto-generated constructor stub
+       }
+               
+       
+}
index f64b7431f78443202d9b58efbe9cdb76e40f155f..d92042979b1ff204b3bcd7d984ddc6313ca397cb 100644 (file)
@@ -38,20 +38,25 @@ public class CombinedPainter implements SegmentationPainter {
                // Paint image
                gc.drawImage(ctx.getImage(), 0, 0);
                
+               System.out.println("Number of mask objects"+ctx.getSegmentObjects().size());
                // Paint all masks skipping the enabled mask.
-               if(ctx.getMasks().size() > 0)
+               if(ctx.getSegmentObjects().size() > 0)
                {
                        // For drawing all the disabled masks.
-                       for(SegmentationMask mask : ctx.getMasks())
+                       for(SegmentationMask segmentObject : ctx.getSegmentObjects())
                        {
                                // Skipping the enabled segment from painting. We will paint the enabled segment at last.
-                               if(mask.enabled == true)
+                               if(segmentObject instanceof ie.dcu.segment.SegmentationObject)
                                {
-                                       continue;
+                                       System.out.println("Enabled status : "+((ie.dcu.segment.SegmentationObject)segmentObject).enabled);
+                                       if(((ie.dcu.segment.SegmentationObject)segmentObject).enabled == true)
+                                       {
+                                               continue;
+                                       }
                                }
                                else
                                {
-                                       createVisibleMask(mask,false);
+                                       createVisibleMask(segmentObject,false);
                                        gc.drawImage(maskImage, 0, 0);
                                }
                        }
@@ -60,16 +65,19 @@ public class CombinedPainter implements SegmentationPainter {
                        gc.drawImage(maskImage, 0, 0);
                }
                // Painting the enabled mask.
-               if(ctx.getMasks().size() > 0)
+               if(ctx.getSegmentObjects().size() > 0)
                {
                        // For drawing all the previous masks.
-                       for(SegmentationMask mask : ctx.getMasks())
+                       for(SegmentationMask segmentObject : ctx.getSegmentObjects())
                        {
                                // Blending of background pixel values while pasting the last mask only
-                               if(mask.enabled == true)
+                               if(segmentObject instanceof ie.dcu.segment.SegmentationObject)
                                {
-                                       createVisibleMask(mask,true);
-                                       gc.drawImage(maskImage, 0, 0);
+                                       if(((ie.dcu.segment.SegmentationObject)segmentObject).enabled == true)
+                                       {
+                                               createVisibleMask(segmentObject,true);
+                                               gc.drawImage(maskImage, 0, 0);
+                                       }
                                }
                        }
                }
@@ -94,7 +102,7 @@ public class CombinedPainter implements SegmentationPainter {
         * @param isFirstObject
         * If set to <code>True</code> will blend the background and fore ground pixels.
         */
-       private void createVisibleMask(SegmentationMask mask,boolean isFirstObject) {
+       private void createVisibleMask(SegmentationMask mask,boolean enabled) {
                
                dispose();
                
@@ -110,7 +118,7 @@ public class CombinedPainter implements SegmentationPainter {
                                
                                switch (mask.values[i]) {
                                case SegmentationMask.BACKGROUND:
-                                       alpha = isFirstObject ? (byte) 128 : (byte) 0;
+                                       alpha = enabled ? (byte) 128 : (byte) 0;
                                        index = 2;
                                        break;
                                case SegmentationMask.FOREGROUND:
@@ -136,7 +144,6 @@ public class CombinedPainter implements SegmentationPainter {
                                i++;
                        }
                }
-       
        // Create new mask
        maskImage = new Image(Display.getCurrent(), maskData);
        }