(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.0' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 47826, 1603]*) (*NotebookOutlinePosition[ 52909, 1758]*) (* CellTagsIndexPosition[ 51889, 1721]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Notes", "Section 1"], Cell[CellGroupData[{ Cell["Editorial Changes", "Subsection"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change1", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "\"5. Conclusions\" changed to \"6. ", "Conclusions", "\"." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change2", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "Figure 1 moved to a more appropriate place in the text." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change3", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "Figure 2 moved to a more appropriate place in the text." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change4", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "All separator lines added to table." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change6", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "Figure 3 moved to a more appropriate place in the text." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change5", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "\"Figures 2(b)-(d)\" changed to \"Figures 2(b)-2(d)\"." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change7", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "Table 2 moved to a more appropriate place in the text." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ ButtonBox["TYPO", ButtonData:>"Ed:Change8", Active->True, ButtonStyle->"Hyperlink"], TextForm]]], "Table 3 moved to a more appropriate place in the text." }], "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Image compression using a multilayer neural network", "Title"], Cell["\<\ S. P. LUTTRELL Royal Signals and Radar Establishment, St Andrews Road, Malvern, WORCS, WR14 \ 4NL, UK\ \>", "Author"], Cell["\<\ This paper appeared in Pattern Recognition Letters, 1989, vol. 10, pp. 1-7. Received 26 February 1988 Revised 11 October 1988\ \>", "Text"], Cell["\[Copyright] British Crown Copyright 1989", "Text"], Cell[TextData[{ StyleBox["Abstract:", FontSlant->"Italic"], " We demonstrate that a topographic neural network model (", ButtonBox["Kohonen, 1984", ButtonData:>"Ref:Kohonen1984", ButtonStyle->"Hyperlink"], ") may be used to data compress synthetic aperture radar (SAR) images by up \ to a factor of 8." }], "Abstract"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". Introduction" }], "Section 1", CellTags->"Sect:Introduction"], Cell[TextData[{ "A property of neural networks is their ability to construct feature \ detectors as a result of supervised or unsupervised training. We demonstrate \ that a class of neural networks which produces topographic mappings (", ButtonBox["Kohonen, 1984", ButtonData:>"Ref:Kohonen1984", ButtonStyle->"Hyperlink"], ") may be used to data compress SAR images. In ", ButtonBox["Section", ButtonData:>"Sect:Kohonen", ButtonStyle->"Hyperlink"], " ", CounterBox["Section", "Sect:Kohonen"], " we summarise Kohonen's network learning algorithm, and we present an \ improved version of the algorithm in ", ButtonBox["Section", ButtonData:>"Sect:ImprovedLearningAlgorithm", ButtonStyle->"Hyperlink"], " ", CounterBox["Section", "Sect:ImprovedLearningAlgorithm"], ". In ", ButtonBox["Section", ButtonData:>"Sect:MultilayerMappings", ButtonStyle->"Hyperlink"], " ", CounterBox["Section", "Sect:MultilayerMappings"], " we generalise the method to multilayer mappings and indicate how such \ networks might be implemented as table look?up operations. In ", ButtonBox["Section", ButtonData:>"Sect:DataCompressionSAR", ButtonStyle->"Hyperlink"], " ", CounterBox["Section", "Sect:DataCompressionSAR"], " we apply such a multilayer network to the problem of data compressing SAR \ images." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", "Kohonen's network learning algorithm" }], "Section", CellTags->"Sect:Kohonen"], Cell[TextData[{ "Define a mapping ", Cell[BoxData[ FormBox[ RowBox[{"T", "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], ")"}], TraditionalForm]]], " from a ", Cell[BoxData[ \(TraditionalForm\`d\_in\)]], "-dimensional input vector ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], TraditionalForm]]], " to a ", Cell[BoxData[ \(TraditionalForm\`d\_out\)]], "-dimensional (", Cell[BoxData[ \(TraditionalForm\`d\_out \[LessEqual] d\_in\)]], ") output vector ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "out"], TraditionalForm]]], " as" }], "Text"], Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "out"], "\[Congruent]", RowBox[{"T", "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], ")"}]}], TraditionalForm]], "NumberedEquation", CellTags->"Eq:1"], Cell[TextData[{ "A vector quantiser representation of ", Cell[BoxData[ FormBox[ RowBox[{"T", "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], ")"}], TraditionalForm]]], " may be constructed by defining a set of code vectors ", Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\)], ":", "j"}], "=", "1"}], ",", "2", ",", "\[CenterEllipsis]", ",", "m"}], "}"}], TraditionalForm]]], " together with the ", Cell[BoxData[ \(TraditionalForm\`m\)]], " ", Cell[BoxData[ \(TraditionalForm\`L\_2\)]], " norms" }], "Text"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{\(D\_j\), "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], ")"}], "\[Congruent]", RowBox[{"\[LeftBracketingBar]", RowBox[{"\[LeftBracketingBar]", RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], "-", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\)]}], "\[RightBracketingBar]"}], "\[RightBracketingBar]"}]}], ",", " ", \(j = 1\), ",", "2", ",", "\[CenterEllipsis]", ",", "m"}], TraditionalForm]], "NumberedEquation", CellTags->"Eq:2"], Cell[TextData[{ "and forming a mapping ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], "\[LongRightArrow]", \(j\_0\)}], TraditionalForm]]], " such that ", Cell[BoxData[ \(TraditionalForm\`j = j\_0\)]], " minimises ", Cell[BoxData[ FormBox[ RowBox[{\(D\_j\), "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], ")"}], TraditionalForm]]], " with respect to ", Cell[BoxData[ \(TraditionalForm\`j\)]], ". The index ", Cell[BoxData[ \(TraditionalForm\`j\_0\)]], " then plays the role of the output vector ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "out"], TraditionalForm]]], ", and ", Cell[BoxData[ FormBox[ RowBox[{\(T\^\(-1\)\), "(", SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "out"], ")"}], TraditionalForm]]], " becomes the pseudo-inverse ", Cell[BoxData[ FormBox[ RowBox[{\(j\_0\), "\[LongRightArrow]", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)]}], TraditionalForm]]], "." }], "Text"], Cell[TextData[{ "Kohonen has presented an algorithm for unsupervised training of the set of \ ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\)], TraditionalForm]]], " from examples ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], TraditionalForm]]], " drawn from the pattern space (", ButtonBox["Kohonen, 1984", ButtonData:>"Ref:Kohonen1984", ButtonStyle->"Hyperlink"], "). The algorithm is very similar to the ", Cell[BoxData[ \(TraditionalForm\`K\)]], "-means clustering algorithm, and can also be shown to minimise the mean \ square reconstruction error in certain cases. In its simplest form the \ algorithm may be implemented as two update rules for each presentation of a \ pattern ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], TraditionalForm]]], ":" }], "Text"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)], "\[LongRightArrow]", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)]}], "+", RowBox[{\(\[CurlyEpsilon]\_0\), "(", RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], "-", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)]}], ")"}]}], ","}], TraditionalForm]], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:3"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, N(j\_0)\)], "\[LongRightArrow]", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, N(j\_0)\)]}], "+", RowBox[{\(\[CurlyEpsilon]\_1\), "(", RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], "-", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, N(j\_0)\)]}], ")"}]}], TraditionalForm]], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:4"], Cell[TextData[{ "where ", Cell[BoxData[ \(TraditionalForm\`1 > \[CurlyEpsilon]\_0 > \[CurlyEpsilon]\_1 > 0\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`N(j\_0)\)]], " ranges over some neighbourhood set of ", Cell[BoxData[ \(TraditionalForm\`j\_0\)]], ". The set of neighbourhoods defines the topology of the discrete output \ space which is usually chosen to be some regular lattice in one or two \ dimensions. ", ButtonBox["Equation", ButtonData:>"Eq:3", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:3"], ") by itself will lead to a vector quantiser, but if, in addition, ", ButtonBox["equation", ButtonData:>"Eq:4", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:4"], ") is imposed then the vector quantiser approximates a topographic mapping \ (", ButtonBox["Kohonen, 1984", ButtonData:>"Ref:Kohonen1984", ButtonStyle->"Hyperlink"], "). This arises because ", ButtonBox["equation", ButtonData:>"Eq:4", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:4"], ") tends to force ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, N(j\_0)\)], TraditionalForm]]], " to lie close to ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)], TraditionalForm]]], " in the pattern space, so the pseudo~inverses of ", Cell[BoxData[ \(TraditionalForm\`j\_0\)]], " and ", Cell[BoxData[ \(TraditionalForm\`N(j\_0)\)]], " are close together. The parameters ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_0\)]], " and ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_1\)]], " are functions of the number of training cycles which have elapsed, and ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_1\)]], " also depends on the neighbourhood distance ", Cell[BoxData[ \(TraditionalForm\`\[LeftBracketingBar]\[LeftBracketingBar]j\_0 - N(j\_0)\[RightBracketingBar]\[RightBracketingBar]\)]], ". However we shall see that all such dependencies can be removed for the \ purpose of SAR image compression." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", "An improved learning algorithm" }], "Section", CellTags->"Sect:ImprovedLearningAlgorithm"], Cell[TextData[{ "For simplicity we shall explain our improved algorithm for the case ", Cell[BoxData[ \(TraditionalForm\`d\_out = 1\)]], ". Thus we train initially with a small value of ", Cell[BoxData[ \(TraditionalForm\`m\)]], " (", Cell[BoxData[ \(TraditionalForm\`m = 2\)]], ", say) with nearest neighbour interactions in ", ButtonBox["equation", ButtonData:>"Eq:4", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:4"], ") until the code vectors equilibriate. We then increase ", Cell[BoxData[ \(TraditionalForm\`m\)]], " to ", Cell[BoxData[ \(TraditionalForm\`2 m - 1\)]], " by inserting additional code vectors according to the prescription" }], "Text"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox[ SuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "\[Prime]"], \(in, j\)], "=", RowBox[{\(1\/2\), RowBox[{"(", RowBox[{ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\)], "+", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j + 1\)]}], ")"}]}]}], ",", " ", \(j = 1\), ",", "2", ",", "\[CenterEllipsis]", ",", \(m - 1\)}], TraditionalForm]], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:5"], Cell[TextData[{ "and continue training as before using nearest neighbour interactions only. \ We repeat the cycle of training followed by insertion of new code vectors \ until ", Cell[BoxData[ \(TraditionalForm\`m\)]], " is sufficiently large that the pseudo-inverse ", Cell[BoxData[ FormBox[ RowBox[{\(j\_0\), "\[LongRightArrow]", SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\_0\)]}], TraditionalForm]]], " produces an acceptable reconstruction. When ", Cell[BoxData[ \(TraditionalForm\`d\_out > 1\)]], " an appropriate multidimensional neighbourhood set of ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["v", FontWeight->"Bold"], \(in, j\)], TraditionalForm]]], " used on the right hand side of ", ButtonBox["equation", ButtonData:>"Eq:5", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:5"], ")." }], "Text"], Cell["\<\ This technique of building up the number of code vectors converges more \ rapidly than Kohonen's original algorithm, because our code vector insertion \ procedure seeds the code vectors with good positions, and thus reduces the \ overall amount of computation which is required. We find that the \ consequential increase in the rate of convergence far outweighs the decrease \ due to adjustment of old code vectors after new ones have been inserted. This \ is because our technique ensures that the code vectors tend not to get stuck \ in 'knotted' configurations from which they have a low probability of \ escaping, and also because we do not waste resources attempting to compute \ the optimum locations of multiply correlated code vector positions during the \ early (approximate) stages of the training process, as in Kohonen's original \ scheme.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", "Multilayer mappings" }], "Section", CellTags->"Sect:MultilayerMappings"], Cell[TextData[{ "We have described how to map a ", Cell[BoxData[ \(TraditionalForm\`d\_in\)]], "-dimensional input space into a ", Cell[BoxData[ \(TraditionalForm\`d\_out\)]], "-dimensional output space. For image compression this is not feasible \ because ", Cell[BoxData[ \(TraditionalForm\`d\_in\)]], " is enormous (it is equal to the number of pixels in the image). We must \ therefore partition the image into a large number of blocks of pixels each of \ which is separately processed. Unfortunately this is computationally very \ intensive. If the number of bits which is used to represent ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], TraditionalForm]]], " is not too large and a particular set of code vectors is to be used for \ many images, then the processing time may be reduced by explicitly tabulating \ the mapping ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], "\[LongRightArrow]", \(j\_0\)}], TraditionalForm]]], " for all ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["x", FontWeight->"Bold"], "in"], TraditionalForm]]], ". The maximum feasible table size is around 1 Megabyte using current \ memory technology, which limits the number of input bits to 20 assuming that \ ", Cell[BoxData[ \(TraditionalForm\`0 < j\_0 < 255\)]], " (i.e. 1 byte per table entry). This limitation on ", Cell[BoxData[ \(TraditionalForm\`d\_in\)]], " is unacceptable for image compression, so we must resort to multilayer \ mappings to factorise the overall data compression into calculable pieces." }], "Text"], Cell[TextData[{ "For convenience we shall use the following notation\n\n\t", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((k)\)], TraditionalForm]]], " = state of ", Cell[BoxData[ \(TraditionalForm\`k\)]], "-th network layer,\n\t", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["x", FontWeight->"Bold"], "b", \((k)\)], TraditionalForm]]], " = state of ", Cell[BoxData[ \(TraditionalForm\`b\)]], "-th block of ", Cell[BoxData[ \(TraditionalForm\`k\)]], "-th network layer,\n\t", Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((k)\)], ":", "j"}], "=", "1"}], ",", "2", ",", "\[CenterEllipsis]", ",", \(m\_k\)}], "}"}], TraditionalForm]]], " = code vectors for ", Cell[BoxData[ \(TraditionalForm\`k\)]], "-th network layer,\n\t", Cell[BoxData[ \(TraditionalForm\`j\_b\%\((k)\)\)]], " = result of mapping ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["x", FontWeight->"Bold"], "b", \((k)\)], TraditionalForm]]], "\n\nwhere each layer is partitioned into an array of nonoverlapping blocks \ of identical shape and orientation such as ", Cell[BoxData[ \(TraditionalForm\`2\[Times]1\)]], " or ", Cell[BoxData[ \(TraditionalForm\`2\[Times]2\)]], " pixel regions. We define the input image as ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((0)\)], TraditionalForm]]], ", which we assume is represented as an array of ", Cell[BoxData[ \(TraditionalForm\`w\)]], "-bit unsigned integers. For simplicity we constrain ", Cell[BoxData[ \(TraditionalForm\`m\_k < 2\^w\)]], " so that the ", Cell[BoxData[ \(TraditionalForm\`j\_b\%\((k)\)\)]], " may also be represented as a ", Cell[BoxData[ \(TraditionalForm\`w\)]], "-bit word, and we use the same value ", Cell[BoxData[ \(TraditionalForm\`m\_k = m\)]], " for each layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], ". The mapping from layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], " to ", Cell[BoxData[ \(TraditionalForm\`k + 1\)]], " is accomplished by computing the ", Cell[BoxData[ \(TraditionalForm\`m\)]], " norms ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"\[LeftBracketingBar]", RowBox[{"\[LeftBracketingBar]", RowBox[{ StyleBox[ SubsuperscriptBox["x", StyleBox["b", FontWeight->"Plain"], StyleBox[\((k)\), FontWeight->"Plain"]], FontWeight->"Bold"], "-", SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((k)\)]}], "\[RightBracketingBar]"}], "\[RightBracketingBar]"}], " ", \((j = 1, 2, \[CenterEllipsis], m)\)}], TraditionalForm]]], " for block ", Cell[BoxData[ \(TraditionalForm\`b\)]], ", and selecting as the compressed version of ", Cell[BoxData[ FormBox[ StyleBox[ SubsuperscriptBox["x", StyleBox["b", FontWeight->"Plain"], StyleBox[\((k)\), FontWeight->"Plain"]], FontWeight->"Bold"], TraditionalForm]]], " the value ", Cell[BoxData[ \(TraditionalForm\`j = j\_b\%\((k)\)\)]], " which gives the minimum norm. We show part of this process for the case \ ", Cell[BoxData[ \(TraditionalForm\`m = 7\)]], " in ", ButtonBox["Figure", ButtonData:>"Fig:1", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:1"], ", where a 2-tuple of pixels with value ", Cell[BoxData[ FormBox[ RowBox[{ StyleBox[ SubsuperscriptBox["x", StyleBox["b", FontWeight->"Plain"], StyleBox[\((k)\), FontWeight->"Plain"]], FontWeight->"Bold"], "=", RowBox[{"(", StyleBox[ RowBox[{ SubsuperscriptBox[ StyleBox["x", FontWeight->"Plain"], StyleBox[\(b, 1\), FontWeight->"Plain"], StyleBox[\((k)\), FontWeight->"Plain"]], ",", SubsuperscriptBox[ StyleBox["x", FontWeight->"Plain"], StyleBox[\(b, 2\), FontWeight->"Plain"], StyleBox[\((k)\), FontWeight->"Plain"]]}], FontWeight->"Bold"], StyleBox[")", FontWeight->"Bold"]}]}], TraditionalForm]]], " is mapped (via the code vectors) to a 1-tuple ", Cell[BoxData[ \(TraditionalForm\`j\_b\%\((k)\)\)]], " (", Cell[BoxData[ \(TraditionalForm\`0 \[LessEqual] j\_b\%\((k)\) \[LessEqual] 7\)]], " in this case), which becomes the value of the ", Cell[BoxData[ \(TraditionalForm\`b\)]], "-th pixel in layer ", Cell[BoxData[ \(TraditionalForm\`k + 1\)]], ". This process may be iterated by constructing blocks in layer ", Cell[BoxData[ \(TraditionalForm\`k + 1\)]], " to yield the ", Cell[BoxData[ FormBox[ StyleBox[ SubsuperscriptBox["x", StyleBox["b", FontWeight->"Plain"], StyleBox[\((k + 1)\), FontWeight->"Plain"]], FontWeight->"Bold"], TraditionalForm]]], " which are then mapped to layer ", Cell[BoxData[ \(TraditionalForm\`k + 2\)]], " using another set of code vectors, and so on." }], "Text"], Cell[TextData[Cell[TextData[{ " ", ButtonBox["OPEN", ButtonData:>{ URL[ "http://www.luttrell.org.uk/papers/compress/fig1.gif"], None}, Active->True, ButtonStyle->"Hyperlink"], " " }]]], "NumberedFigure", TextAlignment->Center, CellTags->{"Fig:1", "Ed:Change2"}], Cell[TextData[{ "Stages of coding layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], " to produce layer ", Cell[BoxData[ \(TraditionalForm\`k + 1\)]], "." }], "Caption"], Cell[TextData[{ "The learning algorithm may be generalised to multilayer mappings by \ training the ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((0)\)], TraditionalForm]]], " on a single image ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((0)\)], TraditionalForm]]], " followed by mapping ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((0)\)], TraditionalForm]]], " to ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((1)\)], TraditionalForm]]], " (via the ", Cell[BoxData[ \(TraditionalForm\`j\_b\%\((1)\)\)]], "). The ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((1)\)], TraditionalForm]]], " are then similarly trained on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["x", FontWeight->"Bold"], \((1)\)], TraditionalForm]]], ", and so on. The ", Cell[BoxData[ FormBox[ RowBox[{ SubsuperscriptBox[ StyleBox["x", FontWeight->"Bold"], "b", \((k)\)], "\[LongRightArrow]", \(j\_b\%\((k)\)\)}], TraditionalForm]]], " mappings may then be tabulated for future use. Various improvements to \ this scheme are possible, such as simultaneous optimisation of all layers of \ the mapping, but we do not report them here. In our work we have used ", Cell[BoxData[ \(TraditionalForm\`w = 8\)]], ", ", Cell[BoxData[ \(TraditionalForm\`m = \(2\^w = 256\)\)]], ", and block sizes ", Cell[BoxData[ \(TraditionalForm\`1\[Times]2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`2\[Times]1\)]], ", so a 65 kilobyte (", Cell[BoxData[ \(TraditionalForm\`2\[Times]8\)]], " bit address space, 8 bit entries) look-up table suffices for each set of \ code vectors." }], "Text"], Cell[TextData[{ "Image reconstruction is achieved by backpropagation from the last layer to \ the zeroth layer of the network. The inverse mapping from a pixel value ", Cell[BoxData[ \(TraditionalForm\`j\_b\%\((k)\)\)]], " in layer ", Cell[BoxData[ \(TraditionalForm\`k + 1\)]], " to an image block ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["x", FontWeight->"Bold"], "b", \((k)\)], TraditionalForm]]], " in layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], " is given by the pseudo-inverse ", Cell[BoxData[ FormBox[ RowBox[{\(j\_b\%\((k)\)\), "\[LongRightArrow]", SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((k)\)]}], TraditionalForm]]], " where the ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((k)\)], TraditionalForm]]], " are real-valued quantities. It is necessary to round each component of ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["v", FontWeight->"Bold"], "j", \((k)\)], TraditionalForm]]], " to the nearest integer in order to recover an ", Cell[BoxData[ FormBox[ SubsuperscriptBox[ StyleBox["x", FontWeight->"Bold"], "b", \((k)\)], TraditionalForm]]], " which may be used in the next stage of the backpropagation from layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], " to layer ", Cell[BoxData[ \(TraditionalForm\`k - 1\)]], "." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". Data compression of SAR images" }], "Section", CellTags->"Sect:DataCompressionSAR"], Cell[TextData[{ "In a recent study (", ButtonBox["Werness, 1987", ButtonData:>"Ref:Werness1987", ButtonStyle->"Hyperlink"], ") some statistical measures of the quality of SAR image reconstructions \ from the output of predictive compression systems were presented. We shall \ adopt the same measures, which are:" }], "Text"], Cell[TextData[StyleBox["Mean:", FontSlant->"Italic"]], "Text"], Cell[BoxData[ \(TraditionalForm\`m \[Congruent] \(1\/N\) \(\[Sum]\+\(n = 1\)\%N \ x\_n\)\)], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:6"], Cell[TextData[StyleBox["Variance:", FontSlant->"Italic"]], "Text"], Cell[BoxData[ \(TraditionalForm\`v \[Congruent] \(1\/N\) \(\[Sum]\+\(n = 1\)\%N\((x\_n \ - m)\)\^2\)\)], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:7"], Cell[TextData[StyleBox["Skewness coefficient:", FontSlant->"Italic"]], "Text"], Cell[BoxData[ \(TraditionalForm\`s \[Congruent] \(\(1\/N\) \(\[Sum]\+\(n = \ 1\)\%N\((x\_n - m)\)\^3\)\)\/v\^\(3/2\)\)], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:8"], Cell[TextData[StyleBox["Kurtosis coefficient:", FontSlant->"Italic"]], "Text"], Cell[BoxData[ \(TraditionalForm\`k \[Congruent] \(\(1\/N\) \(\[Sum]\+\(n = \ 1\)\%N\((x\_n - m)\)\^4\)\)\/v\^2 - 3\)], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:9"], Cell[TextData[StyleBox["Autocorrelation at delay one:", FontSlant->"Italic"]], "Text"], Cell[BoxData[ \(TraditionalForm\`a \[Congruent] \(1\/\(N - 1\)\) \(\[Sum]\+\(n = 1\)\%\(N - 1\)\((x\_n - m)\) \((x\_\(n + 1\) - m)\)\)\)], "NumberedEquation", TextAlignment->Left, CellTags->"Eq:10"], Cell[TextData[{ "where ", Cell[BoxData[ \(TraditionalForm\`x\_n\)]], " is the grey level (", Cell[BoxData[ \(TraditionalForm\`0 \[LessEqual] x\_n \[LessEqual] 255\)]], ") of pixel ", Cell[BoxData[ \(TraditionalForm\`n\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`N\)]], " is the number of image pixels (", Cell[BoxData[ \(TraditionalForm\`1 \[LessEqual] n \[LessEqual] N\)]], "). In our work we use ", Cell[BoxData[ \(TraditionalForm\`256\[Times]256\)]], " pixel images so ", Cell[BoxData[ \(TraditionalForm\`N\ = \ 65536\)]], ". The autocorrelation at delay one in ", ButtonBox["equation", ButtonData:>"Eq:10", ButtonStyle->"Hyperlink"], " (", CounterBox["NumberedEquation", "Eq:10"], ") is written in one-dimensional form; the two-dimensional version is \ analogous." }], "Text"], Cell[TextData[{ "Our approach to SAR image compression is different from the model based \ predictive approach of ", ButtonBox["Werness", ButtonData:>"Ref:Werness1987", ButtonStyle->"Hyperlink"], ". A priori, the only constraint that we place on the image compression is \ the number of bits per pixel ", Cell[BoxData[ \(TraditionalForm\`m\)]], " (and hence the number of code vectors per layer in our scheme), and the \ particular choice of block size and shape to use in each layer of the \ network. Everything else is deduced from the statistical structure of the \ training set, which means that, for instance, our approach will attempt to \ preserve information about image speckle. It requires additional prior \ knowledge (i.e. a data model) to reject speckle: this is a future area of \ research." }], "Text"], Cell["\<\ The network is trained on one or more SAR images which contain the types of \ features for which the learning algorithm must form code vectors. Typically \ we use urban images which have many small bright features, and rural images \ which have characteristic textural correlations. In all cases we globally \ scale the image pixel values to normalise their mean value to some \ (approximate) standard.\ \>", "Text"], Cell[TextData[{ "We use a standard network structure parameterised by ", Cell[BoxData[ \(TraditionalForm\`w = 8\)]], ", ", Cell[BoxData[ \(TraditionalForm\`m = \(2\^w = 256\)\)]], ", and block sizes ", Cell[BoxData[ \(TraditionalForm\`1\[Times]2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`2\[Times]1\)]], ", where we alternate the ", Cell[BoxData[ \(TraditionalForm\`1\[Times]2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`2\[Times]1\)]], " blocks from layer to layer of the network. Each network layer thus \ provides a compression factor of 2. The SAR images which we use are \ autofocussed to remove the blurring effect of anomalous sensor motion; this \ results in a single-look fully speckled image with a resolution of 1.5 metre. \ For our purposes we then average the moduli of all contiguous non-overlapping \ ", Cell[BoxData[ \(TraditionalForm\`2\[Times]2\)]], " pixel blocks to produce a smoother image (with 1/4 of the number of \ pixels of the original image). This is a trade-off which entails some loss of \ resolution, but which at the same time reduces image speckle (as in \ multi-look SAR processing)." }], "Text"], Cell[TextData[Cell[TextData[{ " ", ButtonBox["OPEN", ButtonData:>{ URL[ "http://www.luttrell.org.uk/papers/compress/fig2.gif"], None}, Active->True, ButtonStyle->"Hyperlink"], " " }]]], "NumberedFigure", TextAlignment->Center, CellTags->{"Fig:2", "Ed:Change3"}], Cell["\<\ (a) Original modulus SAR image of an urban region. (b) Reconstruction of (a) \ after data compression by a factor of 2. (c) As (b) but with a compression \ factor of 4. (d) As (b) but with a compression factor of 8.\ \>", "Caption"], Cell[TextData[{ "In ", ButtonBox["Figure", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(a) we show a typical urban SAR image. We use this image as a training set \ together with update parameter values ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_0 = 0.1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_1 = 0.02\)]], ". For each network layer a training cycle consists of selecting ", Cell[BoxData[ \(TraditionalForm\`32 m\)]], " image blocks at random in order to train the ", Cell[BoxData[ \(TraditionalForm\`m\)]], " code vectors, starting with ", Cell[BoxData[ \(TraditionalForm\`m = 2\)]], " and performing insertions upon equilibriation of the code vectors until \ ", Cell[BoxData[ \(TraditionalForm\`m = 257\)]], " is reached after 9 training cycles. We finally eliminate one code vector \ chosen at random and perform a final training cycle to achieve equilibriation \ of ", Cell[BoxData[ \(TraditionalForm\`m = \(256 = 2\^8\)\)]], " code vectors. Using these code vectors we forward propagate the image to \ the next network layer, and we repeat the training process to recover the \ next set of code vectors, and so on. We do not vary the values of the ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_0\)]], " and ", Cell[BoxData[ \(TraditionalForm\`\[CurlyEpsilon]\_1\)]], " parameters at any stage." }], "Text"], Cell[TextData[{ "In ", ButtonBox["Figures", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(b), ", CounterBox["NumberedFigure", "Fig:2"], "(c) and ", CounterBox["NumberedFigure", "Fig:2"], "(d) we show the image reconstructions which we obtain from layers 1, 2, 3 \ of a network which was trained on ", ButtonBox["Figure", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(a). These correspond to compression factors of 2, 4, and 8 respectively. \ We also present the values of the statistics for both the original image and \ its reconstruction in ", ButtonBox["Table", ButtonData:>"Tab:1", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedTable", "Tab:1"], " where ", Cell[BoxData[ \(TraditionalForm\`R\_k\)]], " denotes the reconstruction from layer ", Cell[BoxData[ \(TraditionalForm\`k\)]], " (", Cell[BoxData[ \(TraditionalForm\`R\_0\)]], " is the original image), ", Cell[BoxData[ FormBox[ RowBox[{"a", "(", StyleBox["a", FontSlant->"Plain"], ")"}], TraditionalForm]]], " denotes the azimuth (horizontal) autocorrelation and ", Cell[BoxData[ FormBox[ RowBox[{"a", "(", StyleBox["r", FontSlant->"Plain"], ")"}], TraditionalForm]]], " denotes the range (vertical) autocorrelation at delay one." }], "Text"], Cell[BoxData[ FormBox[GridBox[{ {" ", \(R\_0\), \(R\_1\), \(R\_2\), \(R\_3\)}, {"m", "117.4", "116.9", "116.9", "116.2"}, {"v", "3736", "3696", "3619", "3594"}, { RowBox[{"a", "(", StyleBox["a", FontSlant->"Plain"], ")"}], "1701", "1681", "1649", "1355"}, { RowBox[{"a", "(", StyleBox["r", FontSlant->"Plain"], ")"}], "1823", "1811", "1736", "1515"}, {"s", "0.805", "0.820", "0.859", "0.876"}, {"k", \(-0.147\), \(-0.146\), \(-0.032\), \(-0.014\)} }, GridFrame->True, RowLines->True, ColumnLines->True], TraditionalForm]], "NumberedTable", CellTags->{"Tab:1", "Ed:Change4"}], Cell[TextData[{ "Statistics for the urban images in ", ButtonBox["Figures", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(a)-", CounterBox["NumberedFigure", "Fig:2"], "(d)" }], "Caption"], Cell[TextData[{ "We also perform a visual comparison of ", Cell[BoxData[ \(TraditionalForm\`R\_0\)]], " and ", Cell[BoxData[ \(TraditionalForm\`R\_k\)]], " (", Cell[BoxData[ \(TraditionalForm\`k > 0\)]], ") by 'flicker photometry' in which the images are rapidly interchanged on \ a display screen. ", Cell[BoxData[ \(TraditionalForm\`R\_1\)]], " is virtually indistinguishable from ", Cell[BoxData[ \(TraditionalForm\`R\_0\)]], ". The only obvious difference between ", Cell[BoxData[ \(TraditionalForm\`R\_2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`R\_0\)]], " is that the grey level of some pixels is substantially different, but the \ resolution of fine detail is preserved. ", Cell[BoxData[ \(TraditionalForm\`R\_3\)]], " shows the same effect to a greater extent, and probably represents the \ limit to which our data compression scheme can be pushed for this type of SAR \ imagery. The degradation of the ", Cell[BoxData[ FormBox[ RowBox[{"a", "(", StyleBox["a", FontSlant->"Plain"], ")"}], TraditionalForm]]], " and ", Cell[BoxData[ FormBox[ RowBox[{"a", "(", StyleBox["r", FontSlant->"Plain"], ")"}], TraditionalForm]]], " statistics is a major contributor to the visual differences between the \ reconstructions and the original." }], "Text"], Cell[TextData[{ "In order to test the possibility of using a single set of code vectors to \ compress a variety of SAR images, we apply the same code vectors to a rural \ SAR image containing a wood and some other cultural features. The original \ image is produced in the same way as the urban image and is shown in ", ButtonBox["Figure", ButtonData:>"Fig:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:3"], "(a). The reconstructions in ", ButtonBox["Figures", ButtonData:>"Fig:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:3"], "(b), ", CounterBox["NumberedFigure", "Fig:3"], "(c) and ", CounterBox["NumberedFigure", "Fig:3"], "(d) correspond to those in ", ButtonBox["Figures", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(b), ", CounterBox["NumberedFigure", "Fig:2"], "(c) and ", CounterBox["NumberedFigure", "Fig:2"], "(d) and we present the corresponding statistics in ", ButtonBox["Table", ButtonData:>"Tab:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedTable", "Tab:2"], "." }], "Text"], Cell[TextData[Cell[TextData[{ " ", ButtonBox["OPEN", ButtonData:>{ URL[ "http://www.luttrell.org.uk/papers/compress/fig3.gif"], None}, Active->True, ButtonStyle->"Hyperlink"], " " }]]], "NumberedFigure", TextAlignment->Center, CellTags->{"Fig:3", "Ed:Change6"}], Cell[TextData[{ "(a) Original modulus SAR image of a rural region. (b)-(d) Analogues of ", ButtonBox["Figures", ButtonData:>"Fig:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:2"], "(b)-", CounterBox["NumberedFigure", "Fig:2"], "(d) for ", ButtonBox["Figure", ButtonData:>"Fig:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:3"], "(a)." }], "Caption", CellTags->"Ed:Change5"], Cell[BoxData[ FormBox[GridBox[{ {" ", \(R\_0\), \(R\_1\), \(R\_2\), \(R\_3\)}, {"m", "136.2", "135.6", "135.2", "140.0"}, {"v", "3622", "3605", "3660", "4024"}, { RowBox[{"a", "(", StyleBox["a", FontSlant->"Plain"], ")"}], "1457", "1443", "1461", "1396"}, { RowBox[{"a", "(", StyleBox["r", FontSlant->"Plain"], ")"}], "1854", "1841", "1760", "1546"}, {"s", "0.436", "0.448", "0.518", "0.567"}, {"k", \(-0.643\), \(-0.649\), \(-0.559\), \(-0.668\)} }, GridFrame->True, RowLines->True, ColumnLines->True], TraditionalForm]], "NumberedTable", CellTags->{"Tab:2", "Ed:Change7"}], Cell[TextData[{ "Statistics for the rural images in ", ButtonBox["Figures", ButtonData:>"Fig:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedFigure", "Fig:3"], "(a)-", CounterBox["NumberedFigure", "Fig:3"], "(d)" }], "Caption"], Cell[TextData[{ "For comparison we present in ", ButtonBox["Table", ButtonData:>"Tab:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedTable", "Tab:3"], " an equivalent set of results from a network which is trained on the rural \ image." }], "Text"], Cell[BoxData[ FormBox[GridBox[{ {" ", \(R\_0\), \(R\_1\), \(R\_2\), \(R\_3\)}, {"m", "136.2", "135.7", "134.9", "134.6"}, {"v", "3622", "3583", "3591", "3594"}, { RowBox[{"a", "(", StyleBox["a", FontSlant->"Plain"], ")"}], "1457", "1438", "1393", "1206"}, { RowBox[{"a", "(", StyleBox["r", FontSlant->"Plain"], ")"}], "1854", "1843", "1763", "1598"}, {"s", "0.436", "0.450", "0.403", "0.396"}, {"k", \(-0.643\), \(-0.652\), \(-0.695\), \(-0.690\)} }, GridFrame->True, RowLines->True, ColumnLines->True], TraditionalForm]], "NumberedTable", CellTags->{"Tab:3", "Ed:Change8"}], Cell["Statistics for the rural images using matched network", "Caption"], Cell[TextData[{ "The similarity of ", ButtonBox["Table", ButtonData:>"Tab:2", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedTable", "Tab:2"], " and ", ButtonBox["Table", ButtonData:>"Tab:3", ButtonStyle->"Hyperlink"], " ", CounterBox["NumberedTable", "Tab:3"], " suggests that the quality of image reconstruction is not very sensitive \ to precise matching of the network to the image to be compressed, which \ therefore suggests ", "that we may tabulate a single set of code vectors for SAR image \ compression." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", "Conclusions" }], "Section", CellTags->{"Ed:Change1", "Sect:Conclusions"}], Cell["\<\ We have demonstrated the ability of a neural network to learn a feature space \ suitable for SAR image compression and reconstruction. The ability of a \ single network to compress a variety of SAR images suggests that a universal \ feature set might also be used for other low-level SAR image processing \ techniques.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["References", "Section"], Cell[TextData[{ "Kohonen, T. (1984). ", StyleBox["Self Organisation and Associative Memories", FontSlant->"Italic"], ". Springer, Berlin." }], "Reference", CellTags->"Ref:Kohonen1984"], Cell[TextData[{ "Werness, S. A. (1987). Statistical evaluation of predicitve data \ compression systems. ", StyleBox["IEEE Trans. Acoust. Speech Signal Process.", FontSlant->"Italic"], " 35(8), 1190-1198." }], "Reference", CellTags->"Ref:Werness1987"] }, Closed]] }, Open ]] }, FrontEndVersion->"5.0 for Microsoft Windows", ScreenRectangle->{{0, 1280}, {0, 941}}, WindowToolbars->"EditBar", WindowSize->{665, 641}, WindowMargins->{{Automatic, 300}, {Automatic, 50}}, Magnification->1, StyleDefinitions -> "Report.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{ "Sect:Introduction"->{ Cell[4730, 174, 112, 5, 70, "Section 1", CellTags->"Sect:Introduction"]}, "Sect:Kohonen"->{ Cell[6264, 225, 135, 6, 70, "Section", CellTags->"Sect:Kohonen"]}, "Eq:1"->{ Cell[7192, 265, 339, 11, 70, "NumberedEquation", CellTags->"Eq:1"]}, "Eq:2"->{ Cell[8338, 307, 777, 20, 70, "NumberedEquation", CellTags->"Eq:2"]}, "Eq:3"->{ Cell[11437, 410, 717, 21, 70, "NumberedEquation", CellTags->"Eq:3"]}, "Eq:4"->{ Cell[12157, 433, 672, 20, 70, "NumberedEquation", CellTags->"Eq:4"]}, "Sect:ImprovedLearningAlgorithm"->{ Cell[15159, 531, 147, 6, 70, "Section", CellTags->"Sect:ImprovedLearningAlgorithm"]}, "Eq:5"->{ Cell[16063, 565, 716, 20, 70, "NumberedEquation", CellTags->"Eq:5"]}, "Sect:MultilayerMappings"->{ Cell[18678, 637, 129, 6, 70, "Section", CellTags->"Sect:MultilayerMappings"]}, "Fig:1"->{ Cell[26618, 887, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:1", "Ed:Change2"}]}, "Ed:Change2"->{ Cell[26618, 887, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:1", "Ed:Change2"}]}, "Sect:DataCompressionSAR"->{ Cell[30842, 1033, 134, 5, 70, "Section", CellTags->"Sect:DataCompressionSAR"]}, "Eq:6"->{ Cell[31387, 1053, 159, 4, 70, "NumberedEquation", CellTags->"Eq:6"]}, "Eq:7"->{ Cell[31620, 1062, 171, 4, 70, "NumberedEquation", CellTags->"Eq:7"]}, "Eq:8"->{ Cell[31877, 1071, 187, 4, 70, "NumberedEquation", CellTags->"Eq:8"]}, "Eq:9"->{ Cell[32150, 1080, 185, 4, 70, "NumberedEquation", CellTags->"Eq:9"]}, "Eq:10"->{ Cell[32429, 1089, 238, 5, 70, "NumberedEquation", CellTags->"Eq:10"]}, "Fig:2"->{ Cell[36035, 1190, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:2", "Ed:Change3"}]}, "Ed:Change3"->{ Cell[36035, 1190, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:2", "Ed:Change3"}]}, "Tab:1"->{ Cell[39580, 1307, 770, 19, 70, "NumberedTable", CellTags->{"Tab:1", "Ed:Change4"}]}, "Ed:Change4"->{ Cell[39580, 1307, 770, 19, 70, "NumberedTable", CellTags->{"Tab:1", "Ed:Change4"}]}, "Fig:3"->{ Cell[43251, 1434, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:3", "Ed:Change6"}]}, "Ed:Change6"->{ Cell[43251, 1434, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:3", "Ed:Change6"}]}, "Ed:Change5"->{ Cell[43543, 1446, 469, 20, 70, "Caption", CellTags->"Ed:Change5"]}, "Tab:2"->{ Cell[44015, 1468, 770, 19, 70, "NumberedTable", CellTags->{"Tab:2", "Ed:Change7"}]}, "Ed:Change7"->{ Cell[44015, 1468, 770, 19, 70, "NumberedTable", CellTags->{"Tab:2", "Ed:Change7"}]}, "Tab:3"->{ Cell[45334, 1515, 770, 19, 70, "NumberedTable", CellTags->{"Tab:3", "Ed:Change8"}]}, "Ed:Change8"->{ Cell[45334, 1515, 770, 19, 70, "NumberedTable", CellTags->{"Tab:3", "Ed:Change8"}]}, "Ed:Change1"->{ Cell[46792, 1563, 130, 6, 70, "Section", CellTags->{"Ed:Change1", "Sect:Conclusions"}]}, "Sect:Conclusions"->{ Cell[46792, 1563, 130, 6, 70, "Section", CellTags->{"Ed:Change1", "Sect:Conclusions"}]}, "Ref:Kohonen1984"->{ Cell[47336, 1584, 196, 6, 70, "Reference", CellTags->"Ref:Kohonen1984"]}, "Ref:Werness1987"->{ Cell[47535, 1592, 263, 7, 70, "Reference", CellTags->"Ref:Werness1987"]} } *) (*CellTagsIndex CellTagsIndex->{ {"Sect:Introduction", 48508, 1621}, {"Sect:Kohonen", 48612, 1624}, {"Eq:1", 48701, 1627}, {"Eq:2", 48792, 1630}, {"Eq:3", 48883, 1633}, {"Eq:4", 48975, 1636}, {"Sect:ImprovedLearningAlgorithm", 49093, 1639}, {"Eq:5", 49201, 1642}, {"Sect:MultilayerMappings", 49312, 1645}, {"Fig:1", 49414, 1648}, {"Ed:Change2", 49527, 1651}, {"Sect:DataCompressionSAR", 49653, 1654}, {"Eq:6", 49755, 1657}, {"Eq:7", 49847, 1660}, {"Eq:8", 49939, 1663}, {"Eq:9", 50031, 1666}, {"Eq:10", 50124, 1669}, {"Fig:2", 50218, 1672}, {"Ed:Change3", 50332, 1675}, {"Tab:1", 50441, 1678}, {"Ed:Change4", 50554, 1681}, {"Fig:3", 50662, 1684}, {"Ed:Change6", 50776, 1687}, {"Ed:Change5", 50890, 1690}, {"Tab:2", 50981, 1693}, {"Ed:Change7", 51094, 1696}, {"Tab:3", 51202, 1699}, {"Ed:Change8", 51315, 1702}, {"Ed:Change1", 51428, 1705}, {"Sect:Conclusions", 51551, 1708}, {"Ref:Kohonen1984", 51673, 1711}, {"Ref:Werness1987", 51780, 1714} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1776, 53, 26, 0, 70, "Section 1"], Cell[CellGroupData[{ Cell[1827, 57, 39, 0, 70, "Subsection"], Cell[1869, 59, 260, 10, 70, "Text"], Cell[2132, 71, 254, 8, 70, "Text"], Cell[2389, 81, 254, 8, 70, "Text"], Cell[2646, 91, 234, 8, 70, "Text"], Cell[2883, 101, 254, 8, 70, "Text"], Cell[3140, 111, 253, 8, 70, "Text"], Cell[3396, 121, 253, 8, 70, "Text"], Cell[3652, 131, 253, 8, 70, "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[3954, 145, 68, 0, 70, "Title"], Cell[4025, 147, 127, 4, 70, "Author"], Cell[4155, 153, 149, 4, 70, "Text"], Cell[4307, 159, 57, 0, 70, "Text"], Cell[4367, 161, 338, 9, 70, "Abstract"], Cell[CellGroupData[{ Cell[4730, 174, 112, 5, 70, "Section 1", CellTags->"Sect:Introduction"], Cell[4845, 181, 1382, 39, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[6264, 225, 135, 6, 70, "Section", CellTags->"Sect:Kohonen"], Cell[6402, 233, 787, 30, 70, "Text"], Cell[7192, 265, 339, 11, 70, "NumberedEquation", CellTags->"Eq:1"], Cell[7534, 278, 801, 27, 70, "Text"], Cell[8338, 307, 777, 20, 70, "NumberedEquation", CellTags->"Eq:2"], Cell[9118, 329, 1295, 46, 70, "Text"], Cell[10416, 377, 1018, 31, 70, "Text"], Cell[11437, 410, 717, 21, 70, "NumberedEquation", CellTags->"Eq:3"], Cell[12157, 433, 672, 20, 70, "NumberedEquation", CellTags->"Eq:4"], Cell[12832, 455, 2290, 71, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[15159, 531, 147, 6, 70, "Section", CellTags->"Sect:ImprovedLearningAlgorithm"], Cell[15309, 539, 751, 24, 70, "Text"], Cell[16063, 565, 716, 20, 70, "NumberedEquation", CellTags->"Eq:5"], Cell[16782, 587, 981, 30, 70, "Text"], Cell[17766, 619, 875, 13, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[18678, 637, 129, 6, 70, "Section", CellTags->"Sect:MultilayerMappings"], Cell[18810, 645, 1785, 46, 70, "Text"], Cell[20598, 693, 6017, 192, 70, "Text"], Cell[26618, 887, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:1", "Ed:Change2"}], Cell[26910, 899, 189, 8, 70, "Caption"], Cell[27102, 909, 2101, 68, 70, "Text"], Cell[29206, 979, 1599, 49, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[30842, 1033, 134, 5, 70, "Section", CellTags->"Sect:DataCompressionSAR"], Cell[30979, 1040, 338, 8, 70, "Text"], Cell[31320, 1050, 64, 1, 70, "Text"], Cell[31387, 1053, 159, 4, 70, "NumberedEquation", CellTags->"Eq:6"], Cell[31549, 1059, 68, 1, 70, "Text"], Cell[31620, 1062, 171, 4, 70, "NumberedEquation", CellTags->"Eq:7"], Cell[31794, 1068, 80, 1, 70, "Text"], Cell[31877, 1071, 187, 4, 70, "NumberedEquation", CellTags->"Eq:8"], Cell[32067, 1077, 80, 1, 70, "Text"], Cell[32150, 1080, 185, 4, 70, "NumberedEquation", CellTags->"Eq:9"], Cell[32338, 1086, 88, 1, 70, "Text"], Cell[32429, 1089, 238, 5, 70, "NumberedEquation", CellTags->"Eq:10"], Cell[32670, 1096, 876, 31, 70, "Text"], Cell[33549, 1129, 841, 17, 70, "Text"], Cell[34393, 1148, 426, 7, 70, "Text"], Cell[34822, 1157, 1210, 31, 70, "Text"], Cell[36035, 1190, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:2", "Ed:Change3"}], Cell[36327, 1202, 242, 4, 70, "Caption"], Cell[36572, 1208, 1513, 42, 70, "Text"], Cell[38088, 1252, 1489, 53, 70, "Text"], Cell[39580, 1307, 770, 19, 70, "NumberedTable", CellTags->{"Tab:1", "Ed:Change4"}], Cell[40353, 1328, 263, 12, 70, "Caption"], Cell[40619, 1342, 1421, 43, 70, "Text"], Cell[42043, 1387, 1205, 45, 70, "Text"], Cell[43251, 1434, 289, 10, 70, "NumberedFigure", CellTags->{"Fig:3", "Ed:Change6"}], Cell[43543, 1446, 469, 20, 70, "Caption", CellTags->"Ed:Change5"], Cell[44015, 1468, 770, 19, 70, "NumberedTable", CellTags->{"Tab:2", "Ed:Change7"}], Cell[44788, 1489, 263, 12, 70, "Caption"], Cell[45054, 1503, 277, 10, 70, "Text"], Cell[45334, 1515, 770, 19, 70, "NumberedTable", CellTags->{"Tab:3", "Ed:Change8"}], Cell[46107, 1536, 72, 0, 70, "Caption"], Cell[46182, 1538, 573, 20, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[46792, 1563, 130, 6, 70, "Section", CellTags->{"Ed:Change1", "Sect:Conclusions"}], Cell[46925, 1571, 342, 6, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[47304, 1582, 29, 0, 70, "Section"], Cell[47336, 1584, 196, 6, 70, "Reference", CellTags->"Ref:Kohonen1984"], Cell[47535, 1592, 263, 7, 70, "Reference", CellTags->"Ref:Werness1987"] }, Closed]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)