https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Nicolas Ballas <ballas(a)lrde.epita.fr>
Start a doc about the Milena images types and their properties.
* sandbox/ballas/doc: New.
* sandbox/ballas/doc/image_tours.txt: New.
image_tours.txt | 486 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 486 insertions(+)
Index: sandbox/ballas/doc/image_tours.txt
--- sandbox/ballas/doc/image_tours.txt (revision 0)
+++ sandbox/ballas/doc/image_tours.txt (revision 0)
@@ -0,0 +1,486 @@
+-*- outline -*-
+
+* Introduction
+
+
+* What is a property?
+
+** Two types of properties
+
+
+*** Declaratif mode: (find an exemple).
+
+
+Here, the properties must be define by the image type programmer. They cannot
+be deduce from the image associated type. So we can't find the properties by
+introspecting the image type (with introspection).
+
+
+ declaration definition ..... I check
+ ------- ----------
+| | / \
+| Props | ----> | Image Type |
+| | \ ___________/
+ -------
+
+
+
+*** Automatic mode: (find an exemple).
+
+Here, we get the image properties from the image associated type
+(site, pset...).
+
+
+ -----------
+ / \
+ | Image Type | automatic
+ and associated -----> Props
+ type
+ \ ___________/
+
+
+
+** Semantic
+
+Properties are a way to classify the images depends or their type.
+
+*** Static Checking
+
+ Some operators are only define in special cases. Properties provide a way to
+check that the operator input type respect the operator requirement.
+
+*** Specialization of an Algorithm
+ (ex: dilatation/erosion).
+TODO: detail the example.
+
+*** Implementation inherentence
+
+Milena image types are property driven.
+It is possible to get a special behavior (not describe in the Image Concept)
+depends on the property define in the property associated for the image
+type. So, it is possible to recover some piece of interface depending on the
+image type properties.
+For instance an Image2d has the bidimensional, and random value access.
+ properties. Hence, Image2d automatically provides a row/column access:
+V at(Point2d<T>::coord x, Point2d<T>::coord y).
+
+
+
+
+*** Difference between a property and its values
+
+*** Hierarchie of property (scalar/integer)
+
+** Implementation of properties in Milena
+
+* Algorithm and Properties
+
+** Specialization
+
+** Static checking
+
+
+* Image Properties:
+
+** global Properties:
+ category: primary,
+ { domain_morpher, value_morpher, identity_morpher } < morpher
+
+ border: none,
+ { stored, computed } < some
+
+ neighb: none,
+ some
+
+ data: stored,
+ linear < stored
+ raw < linear,
+ computed
+
+ io: read,
+ write,
+ read_only < read,
+ write_only < write,
+ read_write < both read'n write
+
+ speed: slow,
+ fast,
+ fastest
+
+
+** Properties related to I::value
+ kind: color,
+ gray,
+ label,
+ logic < label,
+ binary < logic,
+ data
+
+ quant: low,
+ high
+
+ value: scalar,
+ vectorial,
+ structed,
+ pointer
+
+
+** Properties related to I::pset
+ access: random,
+ browsing
+
+ space: one_d,
+ two_d,
+ three_d
+
+ size: huge,
+ regular
+
+ support: irregular,
+ regular
+ aligned < regular
+
+
+* Values Properties:
+ nature: scalar,
+ { integer, floating } < scalar,
+ vectorial,
+ matric,
+ symbolic,
+ strutured,
+ unknow
+
+ kind: color,
+ grey,
+ label,
+ logic < label,
+ binary < logic,
+ data
+
+ quant: low,
+ high
+
+
+
+* Image types and their associated properties
+
+** Primitive Image
+
+Primitive image are image which are not based on another image type.
+
+A primitive image type property can be either declared or automatically get
+back with the help of associated types.
+
+
+FIXME: find a good notation...
+
+** Image nD
+
+Image on regular grid where grides nodes are points.
+To gain efficienty, Images nD have a virtual borders.
+All these image are templated by T, the image value type.
+
+*** Image1d<T>
+
+**** Associated types:
+
+value = T
+
+site = point1d
+psite = point1d == point_<tick,int>
+pset = box1d
+
+**** Properties:
+
+--> global properties
+
+category = primary
+border = stored
+neighb: none
+data = raw
+io = read_write
+speed = fastest
+
+--> properties related to values
+
+// Depend on T FIXME, where the property are defined??
+kind =
+quant =
+value =
+
+--> properties related to the pset
+
+access = random
+space = one_d
+size = regular
+support = aligned
+
+**** Specific interface:
+ FIXME....
+
+
+
+
+
+
+*** Image2d<T>
+
+**** Associated types:
+
+value = T
+
+site = point2d
+psite = point2d == point_<square,int>
+pset = box2d
+
+**** Properties:
+
+--> global properties
+
+category = primary
+border = stored
+neighb: none
+data = raw
+io = read_write
+speed = fastest
+
+--> properties related to values
+
+// Depend on T FIXME, where the property are defined??
+kind =
+quant =
+value =
+
+--> properties related to the pset
+
+access = random
+space = two_d
+size = regular
+support = aligned
+
+**** Specific interface:
+ FIXME....
+
+
+
+*** Image3d<T>
+
+**** Associated types:
+
+value = T
+
+site = point3d
+psite = point3d == point_<cube,int>
+pset = box3d
+
+**** Properties:
+
+--> global properties
+
+category = primary
+border = stored
+neighb: none
+data = raw
+io = read_write
+speed = fastest
+
+--> properties related to values
+
+// Depend on T FIXME, where the property are defined??
+kind =
+quant =
+value =
+
+--> properties related to the pset
+
+access = random
+space = three_d
+size = regular
+support = aligned
+
+**** Specific interface:
+ FIXME....
+
+
+
+
+** Image based on function
+
+The images based on function are templated by F and P, where
+F is p2v function type and P a psite
+
+Question: Is there any restriction on F and S ??
+-> S must be include in the definition set of F
+
+*** pw::image<F, S>
+
+**** Associated types:
+
+value = F::result
+
+site = S::site
+psite = S::pset
+pset = S
+
+**** Properties:
+
+--> global properties
+
+category = primary
+border = none
+neighb: none
+data = computed // computed => read_only!
+io = read_only
+speed = fast
+
+--> properties related to values
+
+kind =??
+quant =??
+value = fixme
+
+--> properties related to the pset
+
+access = browsing // Why the access property is set to browsing?
+space = fixme_
+size = regular
+support = fixme
+
+FIXME: see how to fix all the fixme in the pw::image properties.
+How to deal with the lvalue??
+
+Is there any lvalue for image with computed data?
+lvalue just for image with stored//read_only data?
+
+**** Specific interface:
+ FIXME....
+
+
+
+
+** Run based Encoded image
+
+All the run based encoded images have their definition domains encoded by ...
+runs. These images types are not morpher types since these do not lie on
+another image type.
+A run is a "continuous" (note this is wrong, cf graph index) set of sites.
+It is define by a site start, and a length.
+All the run based encoded image are templated by P, T where P is a site type
+and T a value type.
+
+
+
+Note:
+type one shot (const)!!!
+Do we store the the null value in the rle encoding.
+(Do we compress all the images values, or only the image objects...)
+Is there any restriction on P and T?
+Can we compress all the image types or only the point wise image type
+(cf the on_the_same_line in the encode algorithm).
+
+How the properties are setted and to which values?
+
+Depend on the PointWise property ??
+
+*** RLE Image
+
+A RLE image can be defined as the following:
+{(p, v)} where p is a run of P and v is a value of type T.
+
+
+**** Associated types:
+
+value = T
+
+site = P
+psite = runs_psite<P>
+pset = p_runs_<P>
+
+**** Properties:
+
+--> global properties
+
+category = primary
+border = none
+neighb: none
+data = linear
+io = read_only
+speed = slow
+
+--> properties related to values
+
+// Depend on T FIXME, where the property are defined??
+kind =
+quant =
+value =
+
+--> properties related to the pset
+
+access = browsing
+space = depend on P //FIXME the property setted in the milena code is wrong.
+size = regular // Should we say compressed?
+support = depend on P // The property setted in the milena code is wrong
+
+
+*** Compact RLE
+
+*** Sparse Image
+
+A RLE image can be defined as the following:
+{(p, [v])} where p is a run of P and v is a value of type T, and [v] is an
+array of size p.length().
+
+
+**** Associated types:
+
+value = T
+
+site = P
+psite = runs_psite<P>
+pset = p_runs_<P>
+
+**** Properties:
+
+Same properties than the RLE Image type.
+
+
+*** Value encoded image
+
+
+** Graph Image
+
+FIXME: See with roland
+
+**** Connectivity based on a graph.
+
+
+** Morpher (Derived Image)
+
+Mopher are Image types which transform an Image type into a new type. So, they
+rest upon another images types. Most of the mopher properties are
+transformation of the input image type properties.
+
+A morpher image type property can be declared, automatically get back with
+the help of the associated type or be a transformation of a property of the
+input image type.
+
+*** Identity morpher
+
+*** Domain morpher
+
+*** Value morpher
+
+
+*** Image_if
+
+???
+
+
+
+
+Note:
+The different grid (retrieve from point_ class):
+ - tick,
+ - square,
+ - hexa,
+ - cube