Sei sulla pagina 1di 57

AUTOMATIC NUCLEAR SEGMENTATION USING MULTI-

SCALE RADIAL LINE SCANNING WITH DYNAMIC


PROGRAMMING
ABSTRACT
In the diagnosis of various cancers by analyzing histological images, automatic nuclear
segmentation is an important step. However, nuclear segmentation is a difficult problem because
of overlapping nuclei, inhomogeneous staining, and presence of noisy pixels and other tissue
components. In this paper, we present an automatic technique for nuclear segmentation in skin
histological images. The proposed technique first applies a bank of generalized Laplacian of
Gaussian kernels to detect nuclear seeds. Based on the detected nuclear seeds, a multi-scale radial
line scanning (mRLS) method combined with dynamic programming (DP) is applied to extract a
set of candidate nuclear boundaries. The gradient, intensity and shape information are then
integrated to determine the optimal boundary for each nucleus in the image. Nuclear overlap
limitation is finally imposed based on a Dice coefficient measure such that the obtained nuclear
contours do not severely intersect with each other.
TABLE OF CONTENTS

CHAPTER TITLE PAGE


NO. NO.

ABSTRACT

LIST OF FIGURES

LIST OF ABBREVATIONS

CHAPTER 1 : INTRODUCTION

1.1 GENERAL
1.1.1 THE IMAGE PROCESSING SYSTEM

1.1.2 IMAGE PROCESSING FUNDAMENTAL

1.2 EXISTING SYSTEM


1. 1.2.1 DISADVANTAGES OF EXISTING SYSTEM

1.3 SCOPE OF THE PROJECT


1.4 LITERATURE SURVEY

1.5 PROPOSED SYSTEM

1.5.1 PROPOSED SYSTEM ADVANTAGES


CHAPTER 2 :PROJECT DESCRIPTION

2.1 INTRODUCTION

2.2 RELATED WORK

2.2.1 SEEDS DETECTION

2.2.2 NUCLEAR SEGMENTATION

2.

CHAPTER 3 : SOFTWARE SPECIFICATION

3.1 GENERAL INTRODUCTION TO MATLAB

3. 3.2 EXPRESSIONS

3.2.1 VARIABLES

3.2.2 NUMBERS

3.2.3 OPERATORS

3.2.4 FUNCTIONS

3.3 HANDLING MATRICES

3.3.1 ENTERING MATRICES AND ADDRESSING

THE ELEMENTS

3.3.2 GENERATING MATRICES

3.3.3 CONCATENATION

3.3.4 DELETING ROWS AND COLUMNS

3.3.5 ARRAY ORIENTATION


3.3.6 SCALAR-ARRAY MATHEMATICS

3.3.7 ARRAY-ARRAY MATHEMATICS

3.4 GRAPHICS

3.4.1 CREATING A PLOT

3.4.2 CONTROLLING AXES

3.5 FLOW CONTROL

3.6 WORKING WITH MATLAB

3.7 INTRODUCTION TO VECTOR

MANIPULATIONS

3.7.1 BASIC OPERATIONS

3.7.2 MATHEMATICAL OPERATIONS ON

VECTORS

3.7.3 NATURAL FUNCTIONS OF VECTORS

3.8 BASIC PLOTTING

3.8.1 PLOTS WITH BASIC FUNCTIONALITY

3.8.2 PLOTS USING ‘SUBPLOT’

3.8.3 PROBLEMS

3.8.3.1 SAMPLING OF ’CONTINUOUS’ WAVEFORM

3.8.3.2 SIMPLE 3D-PLOTS

3.9 BASIC PLOT ROUTINES

3.9.1 2 D-ROUTINES
3.9.2 3D-ROUTINES

3.10 RANDOM FUNCTIONS

CHAPTER 4 : IMPLEMENTATION

4. 4.1 GENERAL

4.2 IMPLEMENTATION CODING

4.3 SNAPSHOTS

CHAPTER 5 : CONCLUSION & REFERENCES

5. 5.1 CONCLUSION

5.2 REFERENCES
LIST OF FIGURES

FIGURE NAME OF THE FIGURE PAGE NO


NO

1.1 BLOCK DAIGRAM FOR IMAGE PROCESSING SYSTEM

1.2 BLOCK DIAGRAM OF FUNDAMENTAL SEQUENCE INVOLVED IN AN


IMAGE PROCESSING SYSTEM

1.3 IMAGE PROCESSING TECHNIQUES

1.4 BLOCK DIAGRAM OF PROPOSED SYSTEM


LIST OF ABBREVIATIONS

MATLAB - Matrix Laboratory

GUIDE - Graphical User Interface Development Environment)

MEX-files - MATLAB Executable-files


CHAPTER I

INTRODUCTION

1.1 GENERAL

The term digital image refers to processing of a two dimensional picture by a digital computer.
In a broader context, it implies digital processing of any two dimensional data. A digital image is
an array of real or complex numbers represented by a finite number of bits. An image given in the
form of a transparency, slide, photograph or an X-ray is first digitized and stored as a matrix of
binary digits in computer memory. This digitized image can then be processed and/or displayed
on a high-resolution television monitor. For display, the image is stored in a rapid-access buffer
memory, which refreshes the monitor at a rate of 25 frames per second to produce a visually
continuous display.

1.1.1 THE IMAGE PROCESSING SYSTEM

Digitizer Mass Storage

Image Digital Operator


Processor Computer Console

Hard Copy
Device
Display

FIG 1.1 BLOCK DIAGRAM FOR IMAGE PROCESSING SYSTEM


DIGITIZER:

A digitizer converts an image into a numerical representation suitable for input into a
digital computer. Some common digitizers are

1. Microdensitometer
2. Flying spot scanner
3. Image dissector
4. Videocon camera
5. Photosensitive solid- state arrays.

IMAGE PROCESSOR:

An image processor does the functions of image acquisition, storage, preprocessing,


segmentation, representation, recognition and interpretation and finally displays or records the
resulting image. The following block diagram gives the fundamental sequence involved in an
image processing system.

Problem Image Representation &


Segmentation
Domain Acquisition Description
n

Knowledge Result
Preprocessing Recognition &
interpretation
Base

FIG 1.2 BLOCK DIAGRAM OF FUNDAMENTAL SEQUENCE INVOLVED IN AN


IMAGE PROCESSING SYSTEM

As detailed in the diagram, the first step in the process is image acquisition by an imaging
sensor in conjunction with a digitizer to digitize the image. The next step is the preprocessing step
where the image is improved being fed as an input to the other processes. Preprocessing typically
deals with enhancing, removing noise, isolating regions, etc. Segmentation partitions an image
into its constituent parts or objects. The output of segmentation is usually raw pixel data, which
consists of either the boundary of the region or the pixels in the region themselves. Representation
is the process of transforming the raw pixel data into a form useful for subsequent processing by
the computer. Description deals with extracting features that are basic in differentiating one class
of objects from another. Recognition assigns a label to an object based on the information provided
by its descriptors. Interpretation involves assigning meaning to an ensemble of recognized objects.
The knowledge about a problem domain is incorporated into the knowledge base. The knowledge
base guides the operation of each processing module and also controls the interaction between the
modules. Not all modules need be necessarily present for a specific function. The composition of
the image processing system depends on its application. The frame rate of the image processor is
normally around 25 frames per second.

DIGITAL COMPUTER:

Mathematical processing of the digitized image such as convolution, averaging, addition,


subtraction, etc. are done by the computer.

MASS STORAGE:

The secondary storage devices normally used are floppy disks, CD ROMs etc.

HARD COPY DEVICE:

The hard copy device is used to produce a permanent copy of the image and for the storage
of the software involved.

OPERATOR CONSOLE:

The operator console consists of equipment and arrangements for verification of intermediate
results and for alterations in the software as and when require. The operator is also capable of
checking for any resulting errors and for the entry of requisite data.
1.1.2 IMAGE PROCESSING FUNDAMENTAL:

Digital image processing refers processing of the image in digital form. Modern cameras
may directly take the image in digital form but generally images are originated in optical form.
They are captured by video cameras and digitalized. The digitalization process includes sampling,
quantization. Then these images are processed by the five fundamental processes, at least any one
of them, not necessarily all of them.

IMAGE PROCESSING TECHNIQUES:

This section gives various image processing techniques.

Image Enhancement

Image Restoration

IP
Image Analysis

Image Compression

Image Synthesis

FIG1.3: IMAGE PROCESSING TECHNIQUES

IMAGE ENHANCEMENT:

Image enhancement operations improve the qualities of an image like improving the
image’s contrast and brightness characteristics, reducing its noise content, or sharpen the details.
This just enhances the image and reveals the same information in more understandable image. It
does not add any information to it.
IMAGE RESTORATION:

Image restoration like enhancement improves the qualities of image but all the operations
are mainly based on known, measured, or degradations of the original image. Image restorations
are used to restore images with problems such as geometric distortion, improper focus, repetitive
noise and camera motion. It is used to correct images for known degradations.

IMAGE ANALYSIS:

Image analysis operations produce numerical or graphical information based on


characteristics of the original image. They break into objects and then classify them. They depend
on the image statistics. Common operations are extraction and description of scene and image
features, automated measurements, and object classification. Image analyze are mainly used in
machine vision applications.

IMAGE COMPRESSION:

Image compression and decompression reduce the data content necessary to describe the image.
Most of the images contain lot of redundant information, compression removes all the
redundancies. Because of the compression the size is reduced, so efficiently stored or transported.
The compressed image is decompressed when displayed. Lossless compression preserves the exact
data in the original image, but Lossy compression does not represent the original image but provide
excellent compression.

IMAGE SYNTHESIS:

Image synthesis operations create images from other images or non-image data. Image
synthesis operations generally create images that are either physically impossible or impractical to
acquire.
APPLICATIONS OF DIGITAL IMAGE PROCESSING:

Digital image processing has a broad spectrum of applications, such as remote sensing via
satellites and other space crafts, image transmission and storage for business applications, medical
processing, radar, sonar and acoustic image processing, robotics and automated inspection of
industrial parts.

MEDICAL APPLICATIONS:

In medical applications, one is concerned with processing of chest X-rays, cineangiograms,


projection images of trans axial tomography and other medical images that occur in radiology,
nuclear magnetic resonance (NMR) and ultrasonic scanning. These images may be used for patient
screening and monitoring or for detection of tumors’ or other disease in patients.

SATELLITE IMAGING:

Images acquired by satellites are useful in tracking of earth resources; geographical


mapping; prediction of agricultural crops, urban growth and weather; flood and fire control; and
many other environmental applications. Space image applications include recognition and analysis
of objects contained in image obtained from deep space-probe missions.

COMMUNICATION:

Image transmission and storage applications occur in broadcast television,


teleconferencing, and transmission of facsimile images for office automation, communication of
computer networks, closed-circuit television based security monitoring systems and in military
communications.

RADAR IMAGING SYSTEMS:

Radar and sonar images are used for detection and recognition of various types of targets or in
guidance and maneuvering of aircraft or missile systems.
DOCUMENT PROCESSING:

It is used in scanning, and transmission for converting paper documents to a digital image form,
compressing the image, and storing it on magnetic tape. It is also used in document reading for
automatically detecting and recognizing printed characteristics.

DEFENSE/INTELLIGENCE:

It is used in reconnaissance photo-interpretation for automatic interpretation of earth satellite


imagery to look for sensitive targets or military threats and target acquisition and guidance for
recognizing and tracking targets in real-time smart-bomb and missile-guidance systems.

1.2 EXISTING SYSTEM


In this paper, we propose an efficient method for segmenting cell nuclei in the skin
histopathological images. The proposed technique consists of four modules. First, it separates the
nuclei regions from the background with an adaptive threshold technique. Next, an elliptical
descriptor is used to detect the isolated nuclei with elliptical shapes. This descriptor classifies the
nuclei regions based on two ellipticity parameters. Nuclei clumps and nuclei with irregular shapes
are then localized by an improved seed detection technique based on voting in the eroded nuclei
regions. Finally, undivided nuclei regions are segmented by a marked watershed algorithm.

1.2.1 DISADVANTAGES OF EXISTING SYSTEM

 Accuracy depends upon the accuracy of image binarizations as the topographic surfaces for
segmentation are built from distance maps of binary image.
 Detection is not automatic.

1.3 SCOPE OF THE PROJECT


It is observed that there are two main modules. In the first module, nuclear seeds are detected using
a bank of gLoG kernels with different scales and orientations. In the second module, nuclear
boundaries are delineated by using a multi-scale radial line scanning (mRLS) based method. This
method consists of three sub-modules. The first module estimates candidate nuclear contours using
mRLS with DP based on gradient information. The second module selects the optimal nuclear
contours by integrating nuclear intensity and shape prior with gradient information. The third
module resolves overlapped nuclei based on a predefined area overlapping allowance

1.4 LITERATURE SURVEY


[1] J. Byun et al., “Automated tool for the detection of cell nuclei in digital microscopic
images: application to retinal images,” Molecular Vision, vol. 12, pp. 949–960, 2006.

We propose a novel method based on an image processing algorithm to analyze large sets of
digital micrographs. The nucleus detector design is based on a Laplacian of Gaussian filter.
We use the leave-one-out cross validation method for estimating the generalization error,
which is then used to choose the model and parameters of the proposed nucleus detector with
both fluorescent and dye stained images. We also evaluate the performance of a nucleus
detector by comparing the results with manual counts. When our nucleus detector is applied to
previously unanalyzed images of feline retina, it correctly counts nuclei within the outer
nuclear layer (ONL) with an average error of 3.67% ranging from 0 to 6.07%, and nuclei within
the inner nuclear layer (INL) with an average error of 8.55% ranging from 0 to 13.76%. Our
approach accurately identifies the location of cell bodies. Even though we have a relatively
large error in the INL due to the large intra-observer variation, both manual counting and
nucleus detector result in the same conclusion. This is the first time that cell death in the INL
in response to retinal detachment is analyzed quantitatively. We also test the proposed tool
with various images and show that it is applicable to a wide range of image types with nuclei
varying in size and staining intensity.

[2] C. Lu et al., “Automated image analysis of nuclear atypia in high-power field


histopathological image,” Journal of microscopy, vol. 258, no. 3, pp. 233–240, 2015.

An automated technique for nuclear atypia score (NAS) calculation is proposed. The proposed
technique uses sophisticated digital image analysis and machine-learning methods to measure
the NAS for haematoxylin and eosin stained images. The proposed technique first segments
all nuclei regions. A set of morphology and texture features is extracted from presegmented
nuclei regions. The histogram of each feature is then calculated to characterize the statistical
information of the nuclei. Finally, a support vector machine classifier is applied to classify a
high-power field image into different nuclear atypia classes. A set of 1188 digital images was
analysed in the experiment. We successfully differentiated the high-power field image with
NAS1 versus non-NAS1, NAS2 versus non-NAS2 and NAS3 versus non-NAS3, with area
under receiver-operating characteristic curve of 0.90, 0.86 and 0.87, respectively. In three
classes evaluation, the average classification accuracy was 78.79%. We found that texture-
based feature provides best performance for the classification.

[3] M. N. Gurcan et al., “Image analysis for neuroblastoma classification: Segmentation


of cell nuclei,” in Proceedings of IEEE International Conference on Engineering in
Medicine and Biology Society (EMBC), 2006, pp. 4844–4847.

Extraction of cell nuclei from hematoxylin and eosin (H&E)-stained histopathological images
is an essential preprocessing step in computerized image analysis for disease detection,
diagnosis, and prognosis. We present an automated cell nuclei segmentation approach that
works with H&E-stained images. A color deconvolution algorithm was first applied to the
image to get the hematoxylin channel. Using a morphological operation and thresholding
technique on the hematoxylin channel image, candidate target nuclei and background regions
were detected, which were then used as markers for a marker-controlled watershed transform
segmentation algorithm. Moreover, postprocessing was conducted to split the touching nuclei.
For each segmented region from the previous steps, the regional maximum value positions
were identified as potential nuclei centers. These maximum values were further grouped into
k -clusters, and the locations within each cluster were connected with the minimum spanning
tree technique. Then, these connected positions were utilized as new markers for a watershed
segmentation approach. The final number of nuclei at each region was determined by
minimizing an objective function that iterated all of the possible k -values. The proposed
method was applied to the pathological images of the tumor tissues from The Cancer Genome
Atlas study. Experimental results show that the proposed method can lead to promising results
in terms of segmentation accuracy and separation of touching nuclei.
[4] S. Petushi et al., “Large-scale computations on histology images reveal grade-
differentiating parameters for breast cancer,” BMC medical imaging, vol. 6, no. 1, p. 1,
2006.

Tumor classification is inexact and largely dependent on the qualitative pathological


examination of the images of the tumor tissue slides. In this study, our aim was to develop an
automated computational method to classify Hematoxylin and Eosin (H&E) stained tissue
sections based on cancer tissue texture features.

Image processing of histology slide images was used to detect and identify adipose tissue,
extracellular matrix, morphologically distinct cell nuclei types, and the tubular architecture.
The texture parameters derived from image analysis were then applied to classify images in a
supervised classification scheme using histologic grade of a testing set as guidance. The
histologic grade assigned by pathologists to invasive breast carcinoma images strongly
correlated with both the presence and extent of cell nuclei with dispersed chromatin and the
architecture, specifically the extent of presence of tubular cross sections. The two parameters
that differentiated tumor grade found in this study were (1) the number density of cell nuclei
with dispersed chromatin and (2) the number density of tubular cross sections identified
through image processing as white blobs that were surrounded by a continuous string of cell
nuclei. Classification based on subdivisions of a whole slide image containing a high
concentration of cancer cell nuclei consistently agreed with the grade classification of the entire
slide.

[5] C. Lu et al., “A robust automatic nuclei segmentation technique for quantitative


histopathological image analysis,” Analytical and Quantitative Cytology and Histology, vol.
34, pp. 296–308, 2012.

To develop a computer-aided robust nuclei segmentation technique for quantitative


histopathological image analysis. A robust nuclei segmentation technique for histopathological
image analysis is proposed. The proposed technique uses a hybrid morphological
reconstruction module to reduce the intensity variation within the nuclei regions and suppress
the noise in the image. A local region adaptive threshold selection module based on local
optimal threshold is used to segment the nuclei. The technique incorporates domain-specific
knowledge of skin histopathological images for more accurate segmentation results. The
technique is compared to the manually labeled nuclei locations and nuclei boundaries for the
performance evaluations. On different histopathological images of skin epidermis with
complex background, containing more than 3000 nuclei, the technique provides a good nuclei
detection performance: 88.11% sensitivity rate, 80.02% positive prediction rate and only
5.34% under-segmentation rate compared to the manually labeled nuclei locations. Compared
to the 110 manually segmented nuclei regions, the proposed technique provides a good
segmentation performance (in terms of the nucleus area, perimeter, and form factor). The
proposed technique is able to provide more accurate segmentation performance compared to
the existing techniques and can be employed for quantitative analysis of the histopathological
images.

1.5 PROPOSED SYSTEM


In this paper, we propose a “seed” based technique for nuclear segmentation in histological images,
which can resolve nuclear overlap and obtain occluded nuclear boundaries in clumped nuclei. The
proposed technique detects nuclear seeds by using a set of multi-scale gLoG kernels. For each
nucleus, several boundaries are delineated by a mRLS method combined with DP. The optimal
nuclear boundary is then determined by making use of gradient, intensity and nuclear shape
information. Severely overlapped nuclei are finally resolved based on the Dice coefficient measure
BLOCK DIAGRAM:

Input Image

Nuclear Seed
Detection

Nuclear Boundarty
Delieation

Segmented Output

Fig 1.4 Block diagram of proposed system

1.5.1 PROPOSED SYSTEM ADVANTAGES


 Advantage of recognizing occluded nuclear boundaries for overlapped nuclei.

 Proposed technique is very efficient and suitable for parallel implementations.


CHAPTER 2

PROJECT DESCRIPTION

2.1 INTRODUCTION

Evaluation of cell nuclei plays an important role in the histopathological examination and analysis
of digitized slides. The parameters like cell size, shape, contours and presence or absence of
nucleoli are generally used by pathologists for various cancer diagnosis. The abnormal cell
distributions and morphological changes often indicate the malignancy of the lesion [1], [2].
However, manual counting and segmentation of cell nuclei is a very tedious work, and also prone
to inter- or intra-observer variability due to poor contrast and clumping of nuclei. To reduce the
workload and obtain more objective results, many efforts have been devoted to develop automatic
nuclear segmentation techniques. Threshold-based techniques have been widely used for nuclear
segmentation in histological images. These works are related to segmentation of cell nuclei in the
digitized neuroblastoma slides [3], breast histopathological images [4] and skin histopathological
images.

In order to address this issue, a number of techniques for cellular or nuclear clumps segmentation
have been reported. These techniques mainly includes two categories: concavity analysis based
techniques [6]–[12], and “seed” (or “marker”) based techniques [13]–[18]. For concavity analysis
based techniques, the first step is to identify valid concave points for splitting. Several techniques
exist for identifying concave points on the contour. For example, the concave points have been
detected based on computing the cross product of vectors defined by three consecutive points [6],
or minimizing a cost function to find the bottleneck positions on the contour [7]. With detected
concave points, the next step is to connect them and split cellular or nuclear clumps into isolated
ones. This step can be achieved iteratively by connecting the shortest path between concave points
until all split regions are considered to be isolated [11]. Although concavity analysis based
techniques have been reported to provide a good performance, the performance
is overly sensitive to image binarizations, and the predefined thresholds (usually several
thresholds) that are used for finding valid concave points [7], [10].
For “seed” ( or “marker”) based techniques, the first step is to identify “seeds” for nuclear regions.
These detected “seeds” are usually close to nuclear centers, and used as the starting points for
active contours or watershed segmentation. The segmentation performance depends critically on
the accuracy and reliability of initial seed points. Because of the advantages of simplicity, speed
and absence of adjustable parameters, several marked watershed algorithms have been developed
for cellular or nuclear segmentation. For example, the markers of watershed algorithm are detected
by condition erosion [15], Hminima transform [16], [17], improved voting algorithm [14] and
radial symmetry transform [18]. These watershed based segmentations are heavily replied on the
accuracy of image binarizations as the topographic surfaces for segmentation are built from
distance maps of binary images. In order to get more accurate segmentations, Al-Kofahi et al. [19]
proposed a multi scale Laplacian of Gaussian (mLoG) filter based technique, which detects nuclei
by mLoG filters and segments nuclei based on size-constrained clustering with further refinement
by a graph cuts based algorithm. Qi et al. [13] proposed to detect cell seeds in breast
histopathological images by a single pass voting algorithm and delineate cell contours by a
repulsive level set model [20]. Xing et al. [21] proposed a cell detection and segmentation
technique for evaluating Ki- 67 proliferation index in gauge neuroendocrine tumor images.
Recently a few techniques based on active shape models and deep learning (DL) have been
proposed for nuclear segmentation. Plissiti et al. [23] proposed a technique that segments
overlapping cell nuclei by driving the deformable model based on physical principals, but this
technique only works automatically for the image with a known number of cell nuclei. Lu et al.
[24] proposed a technique to perform cervical cell segmentation by joint optimization of multiple
level set functions. This technique has a high computational complexity and its performance is
critically replied on initial segmentations for level set functions. Janowczyk et al. [25] proposed a
resolution adaptive deep hierarchical (RADHical) learning scheme for nuclear segmentation in
histological images. The RADHical employs the AlexNet network [26] in a multi-resolution
framework, which classifies most of image pixels at low resolutions and only processes uncertain
regions at high resolutions. The RADHical provides a similar performance with the naive DL
model [27] that processes the high-resolution images directly, but it achieves about 6 times speed
improvement. Although the DL methods are very powerful to learn image features, they are
generally quite time consuming to train and apply.
Besides the above mentioned methods, graph theories are also used for medical tissue
segmentations. Li et al. [28] proposed a segmentation method for volumetric images (e.g.,
pulmonary CT images) by computing a minimum s-t cut in a derived arc-weighted directed graph.
Zhang et al. [29] proposed a graph search based method for intestinal gland segmentation in
histological images. The method uses a graph search algorithm to generate the gland boundary
probability map. The watershed algorithm is then applied on the boundary probability map to
perform segmentations. The graph search methods have the potential to be used for nuclear
segmentations, but it is difficult to determine an optimal graph search radius due to nuclear size
variations and existence of clustered nuclei.
2.2 RELATED WORK

2.2.1. SEEDS DETECTION


Because cell nuclei in digitized histological images typically have circular or elliptical shapes, we
apply a gLoG kernels based technique [30] to detect nuclear seeds. This technique first generates
a bank of gLoG kernels with different scales and orientations.
After generating multi-scale gLoG kernels, the same directional kernels are aggregated together
and convolved with the image I (x, y) (the red channel of original color image) to generate response
maps. The points of local maxima are then searched from multiple response maps and clustered
into different groups using mean-shift algorithm [31]. Finally, the geometrical means of local
maxima points in different groups are computed and considered as nuclear seeds.

2.2.2. NUCLEAR SEGMENTATION


After detecting nuclear seeds, the next step is to delineate nuclear boundaries. In order to capture
nuclear boundaries, we propose a mRLS based technique in this module. In the following, we
explain the mRLS based technique in three sub-modules: mRLS with DP, nuclear contour
selection and nuclear overlap processing.
1) mRLS with DP: The radial line scanning (RLS) method has been successfully used to detect
melanocytes in our previous work [32]. To utilize the RLS method, the detected seeds are
considered as nuclear centers. A set of radial lines emerging from the nuclear center are then
computed.
As seen in Fig. the reference nuclear boundary consists of high gradient points. In addition, if
assuming that the directions of radial lines are outward (i.e., pointing from the nuclear center to
the boundary), nuclear boundary points have gradient directions similar to that of corresponding
radial lines. Based on these observations, we append a cost value for each point of radial lines.
This is because orientations of radial lines for one nucleus, in an ideal case, are opposite to gradient
directions of other neighboring nuclear boundaries. After appending a cost value to each point of
radial lines, it might appear that points of nuclear boundaries can be selected by maximizing the
cost value C (pi) in each radial line. However, such simple selection of boundary points is difficult
to obtain a smooth nuclear contour, as the determined boundary points are prone to be disturbed
by isolated high gradient noisy pixels.
CHAPTER 3
SOFTWARE SPECIFICATION

MATLAB 7.0 AND ABOVE

MATLAB

Matlab (Matrix Laboratory) is a high-performance language for scientific and technological


calculations. It integrates computation, visualization and programming in an easy-to-use
environment where problems and solutions are expressed in familiar mathematical notation. It is
a complete environment for high-level programming, as well as interactive data analysis. Some
typical applications are
 system simulations,
 algorithm development,
 data acquisition, analysis, exploration, and visualization, as well as
 Modeling, simulation and prototyping.
Matlab was originally designed as a more convenient tool (than BASIC, FORTRAN or C/C++)
for the manipulation of matrices. It was originally written to provide easy access to matrix software
developed by the LINPACK and EISPACK projects. After- wards, it gradually became the
language of general scientific calculations, visualization and program design. Today, Matlab
engines incorporate the LAPACK and BLAS libraries, embedding the state of the art in software
for matrix computations. It received more functionalities and it still remains a high-quality tool for
scientific computation. Matlab excels at numerical computations, especially when dealing with
vectors or matrices of data. It is a procedural language, combining an efficient programming
structure with a bunch of predefined mathematical commands. While simple problems can be
solved interactively with Matlab, its real power is its ability to create large program structures
which can describe complex technical as well as non-technical systems. Mat- lab has evolved over
a period of years with input from many users. In university environments, it is the standard
computational tool for introductory and advanced courses in mathematics, engineering and
science. In industry, Matlab is the tool of choice for highly-productive research, development and
analysis.
This tutorial script summarizes the tasks and experiments done during the seminar Matlab for
Communications offered by the Department of Communication Systems of the university
Duisburg-Essen. This seminar gives the students the opportunity to get first in touch with Matlab
and further to have background knowledge about the simulation of communication systems. After
a detailed introduction describing the main usage as well as the different definitions in Matlab,
some relevant selected topics, like amplitude modulation, fast Fourier transformation or
convolution, are treated.

INTRODUCTION TO MATLAB
3.1 What is Matlab?

 Matlab is a high-performance language for technical computing. It integrates computation,


programming and visualization in a user-friendly environment where problems and
solutions are expressed in an easy-to-understand mathematical notation.

 Matlab is an interactive system whose basic data element is an array that does not require
dimensioning. This allows the user to solve many technical computing problems, especially
those with matrix and vector operations, in less time than it would take to write a program
in a scalar non-interactive language such as C or FORTRAN.

 Matlab features a family of application-specific solutions which are called toolboxes. It is


very important to most users of Matlab that toolboxes allow to learn and apply specialized
technology. These toolboxes are comprehensive collections of Matlab functions, so-called
M-files that extend the Matlab environment to solve particular classes of problems.

 Matlab is a matrix-based programming tool. Although matrices often need not to be


dimensioned explicitly, the user has always to look carefully for matrix dimensions. If it is
not defined otherwise, the standard matrix exhibits two dimensions n × m. Column vectors
and row vectors are represented consistently by n × 1 and 1 × n matrices, respectively.

Matlab operations can be classified into the following types of operations:


 arithmetic and logical operations,
 mathematical functions,
 graphical functions, and
 input/output operations.
In the following sections, individual elements of Matlab operations are explained in detail.

3.2. EXPRESSIONS
Like most other programming languages, Matlab provides mathematical expressions, but unlike
most programming languages, these expressions involve entire matrices. The building blocks of
expressions are
 Variables
 Numbers
 Operators
 Functions

3.2.1 Variables
Matlab does not require any type declarations or dimension statements. When a new
variable name is introduced, it automatically creates the variable and allocates the appropriate
amount of memory. If the variable already exists, Matlab changes its contents and, if necessary,
allocates new storage.
For example
>> books = 10
Creates a 1-by-1 matrix named books and stores the value 10 in its single element. In the
expression above, >> constitutes the Matlab prompt, where the commands can be entered.
Variable names consist of a string, which start with a letter, followed by any number of
letters, digits, or underscores. Matlab is case sensitive; it distinguishes between uppercase and
lowercase letters. A and a are not the same variable. To view the matrix assigned to any variable,
simply enter the variable name.

3.2.2 Numbers
Matlab uses the conventional decimal notation. A decimal point and a leading plus or minus
sign is optional. Scientific notation uses the letter e to specify a power-of-ten scale factor.
Imaginary numbers use either i or j as a suffix. Some examples of legal numbers are:
7 -55 0.0041 9.657838 6.10220e-10 7.03352e21 2i -2.71828j 2e3i 2.5+1.7j.

3.2.3 Operators
Expressions use familiar arithmetic operators and precedence rules. Some examples are:
+ Addition
- Subtraction
* Multiplication
/ Division
’ Complex conjugate transpose
( ) Brackets to specify the evaluation order.

3.2.4 Functions
Matlab provides a large number of standard elementary mathematical functions, including
sin, sqrt, exp, and abs. Taking the square root or logarithm of a negative number does not lead to
an error; the appropriate complex result is produced automatically. Matlab also provides a lot of
advanced mathematical functions, including Bessel and Gamma functions. Most of these functions
accept complex arguments. For a list of the elementary mathematical functions, type
>> help elfun
Some of the functions, like sqrt and sin are built-in. They are a fixed part of the Matlab core so
they are very efficient. The drawback is that the computational details are not readily accessible.
Other functions, like gamma and sinh, are implemented in so called M-files. You can see the code
and even modify it if you want.

3.3 HANDLING MATRICES


Matlab was mainly designed to deal with matrices. In Matlab, a matrix is a rectangular
array of numbers. So scalars can be interpreted to be 1-by-1 matrices and vectors are matrices with
only one row or column. Matlab has other ways to store both numeric and nonnumeric data, but in
the beginning of learning Matlab, it is usually best to think of everything as a matrix. The
operations in Matlab are designed to be as natural as possible. Where other programming
languages work only with single numbers, Matlab allows working with entire matrices quickly
and easily.
3.3.1 Entering Matrices and Addressing the Elements
The elements of a matrix must be entered one-by-one in a list where the elements of a row
must be separated with commas or blank spaces and the rows are divided by semicolons.
The whole list must be surrounded with square brackets, e.g.
>> A = [1 2 3; 8 6 4; 3 6 9]
After pressing “Enter” Matlab displays the numbers entered in the command line
A= 123
864
369
Addressing an element of a matrix is also very easy. The n-th element of the m-th column in matrix
A from above is A(n,m). So typing
>> A(1,3) + A(2,1) + A(3,2)
will compute the answer ans = 17
The k-th to l-th elements of the m-th to n-th columns can be addressed by A(k:l,m:n),
Further examples:
>> A(2:3,1:2)
ans = 8 6
36
>> A(1,1:2)
addresses the first two elements of the first row.
ans = 1 2
>> A(:,2)
addresses all elements of the second column.
ans = 8
6
4
3.3.2 Generating Matrices
There are different ways to generate matrices. Assigning elements explicitly was presented
in the paragraph above. To create a row vector with 101 equidistant values starting at 0 , this
method would be very tedious. So two other possibilities are shown below:
>> x = linspace(0,pi,101) or x = (0:0.01:1)*pi
In the first case, the Matlab function linspace is used to create x. The function’s arguments
are described by:
linspace(first value, last value, number of values)
With the default number of values = 100.
In the second case, the colon notation (0:0.01:1) creates an array that starts at 0, increments
by 0.01 and ends at 1. Afterwards each element in this array is multiplied by π to create the desired
values in x.
Both of these array creation forms are common in Matlab. While the colon notation form
allows to specify the increment between data elements directly, but not the number of data
elements, the Matlab function linspace allows to specify the number of data elements directly, but
not the increment value between these data elements.
Example
>> v = (10:-2:0)
v = 10 8 6 4 2 0
If the increment is 1, then its usage is optional:
>> w = (5:10)
w = 5 6 7 8 9 10
Matlab also provides four functions that generate basic matrices: zeros, ones, rand and randn.
Some more examples:
>> B = zeros(3,4)
B= 0000
0000
0000
>> C = ones(2,5)*6
C= 66666
66666
>> D = rand(1,5) generates uniformly distributed random elements
D = 0.5028 0.7095 0.4289 0.3046 0.1897
>> E = randn(3,3) generates normally -also called Gaussian- distributed random elements
E= -0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273

3.3.3 Concatenation
Concatenation is the process of joining small matrices to make bigger ones. In fact, the first matrix
A was created by concatenating its individual elements. The pair of square brackets, [ ], is the
concatenation operator. For an example, start with the 3-by-3 matrix A, and form
>> F = [A A+10; A*2 A*4].
The result is a 6-by-6 matrix, obtained by joining the four sub matrices.

F= 1 2 3 11 12 13
8 6 4 18 16 14
3 6 9 13 16 19
2 4 6 4 8 12
16 12 8 32 24 16
6 12 19 12 24 38

3.3.4 Deleting rows and columns


To delete rows or columns of a matrix, just use a pair of square brackets, e.g.
>> A(2,:) = [ ]
Deletes the second row of A.
A= 123
369
It is not possible to delete a single element of a matrix, because afterwards it would not still be a
matrix. (Exception: vectors, since here deleting an element are the same as deleting a row/column.)

3.3.5 Array Orientation


The orientation of an array can be changed with the Matlab transpose operator ’:
>> a = 0:3
a=0123
>> b = a’
b= 0
1
2
3

3.3.6 Scalar-Array Mathematics


Addition, subtraction, multiplication and division by a scalar apply the operation to all elements
of the array:
>> c = [1 2 3 4;5 6 7 8;9 10 11 12]
c= 1 2 3 4
5 6 7 8
9 10 11 12
>> 2*c-1 multiplies each element in c by two and subtracts one from each element of the result.
ans = 1 3 5 7
9 11 13 15
17 19 21 23

3.3.7 Array-Array Mathematics


When two arrays have the same dimensions, which means that they have the same number
of rows and columns, addition, subtraction, multiplication and division apply on an element-by-
element basis in Matlab.

Examples

>> d = [1 2 3; 4 5 6]
d= 123
456

>> e = [2 2 2; 3 3 3]
e= 222
333
>> f = d+e adds d to e on an element-by-element basis
f= 345
789
>> g = 2*d-e multiplies d by two and subtracts e from the result
g= 024
579
Element-by-element multiplication and division work similarly, but the notation is slightly
different:
>> h = d.*e
h= 2 4 6
12 15 18
The element-by-element multiplication uses the dot multiplication symbol.*, the element-by-
element array division uses either. / or.\
>> d./e
ans = 0.500 1.000 1.500
1.333 1.666 2.000
>> e.\d
ans = 0.500 1.000 1.500
1.333 1.666 2.000
In both cases, the elements of the array in front of the slash are divided by the elements of the array
behind the slash. To compute a matrix multiplication only the asterisk * must be used, e.g.
>> C = A * B

Therefore the number of columns of A must equal the number of rows of B.


>> A = [1 2 3; 4 5 6]
A= 123
456
>> B = [1 2; 3 4; 5 6]
12
B= 34
56
>> C = A * B
C= 22 28
49 64

3.4 GRAPHICS
Matlab offers extensive facilities for displaying vectors and matrices as graphs, as well as
annotating and printing these graphs. This section describes some of the most important graphics
functions and gives some examples of some typical applications.

3.4.1 Creating a Plot


The plot function has different forms, depending on the input arguments. If y is a vector,
plot(y) produces a piecewise linear graph of the elements of y versus the index of the elements of
y. If two vectors are specified as arguments, plot(x,y) produces a graph of y versus x. For example
to plot the value of the sine function from zero to 2π, use
>> x = 0:pi/100:2*pi;
>> y = sin(x);
>> plot(x,y)
y = sin(x)
1

0.5

0
y

-0.5

-1
0 1 2 3 4 5 6 7
x

Figure.5 Sine Plot


The xlabel, ylabel and zlabel functions are useful to add x-, y- and z-axis labels. The zlabel function
is only necessary for three-dimensional plots. The title function adds a title to a graph at the top of
the figure and the text function inserts a text in a figure.
The following commands create the final appearance of figure 1.1.
>> xlabel(’x’);
>> ylabel(’y’);
>> title(’y = sin(x)’)
Multiple x-y pairs create multiple graphs with a single call to plot. Matlab automatically cycles
through a predefined (but user settable) list of colors to distinguish between different graphs.
For example, these statements plot three related functions of x1, each curve in a separate
distinguishing color:
>> x1 = 0:pi/100:2*pi;
>> y1 = sin(x1);
>> y2 = sin(x1 - 0.25);
>> y3 = sin(x2 - 0.5);
>> plot(x1,y1,x1,y2,x1,y3)
The number of points of the individual graphs may be even different. It is possible to specify the
color, the line style and the markers, such as plus signs or circles, with: plot(x,y,’color style
marker’)

y = sin(x)
1

0.5

0
y

-0.5

-1
0 1 2 3 4 5 6 7
x

Figure.6 Multiple graphs with a single call to plot


A color style marker is a 1-, 2-, or 3-character string. It may consist of a color type, a line style
type, and a marker type:
 Color strings are ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’ and ’k’. These correspond to cyan,
magenta, yellow, red, green, blue, white, and black.
 Line style strings are ’-’ for solid, ’--’ for dashed, ’:’ for dotted, ’-.’ for dash-dotted
and ’none’ for no line.
 The most common marker types include ’+’, ’o’, ’*’ and ’x’.
For example, the statement plot(x1,y1,’b:*’) plots a blue dotted line and places asterisk sign
markers at each data point. If only a marker type is specified but not a line style, Matlab draws
only the marker.
The plot function automatically opens a figure window to plot the graphic. If there is
already an existing figure window, these windows will be used for the new plot. The command
figure can be used to keep an existing figure window and open a new one, which will be used for
the next plot. To make an existing window the current window, type figure(n) where n is the
number in the title bar of the window to be selected. The next graphic will be plotted in this selected
window.
To add further plots to an existing graph, the hold command is useful. The hold on
command keeps the content of the figure and plots can be added. So the above example could be
done with three single plot commands and the hold on command. hold off ends the hold on status
of a figure window. hold can be used to toggle between on and off.

3.4.2 Controlling Axes


Usually, Matlab finds the maxima and minima of the data to be plotted by it and uses them
to create an appropriate plot box and axes labeling. The axis function overwrites this default by
setting custom axis limits,
>> axis([xmin xmax ymin ymax]).
The following example illustrates the use of the functions presented above.
>> t = -pi:pi/100:pi;
>> s = cos(t);
>> plot(t,s)
>> axis([-pi pi -1 1])
>> xlabel(’-\pi \leq t \leq \pi’)
>> ylabel(’cos(t)’)
>> title(’The cosine function’)
>> text(-2, -0.5,’This is a note at position (-2, -0.5)’)

The cosine function


1

0.5
cos(t)

-0.5 This is a note at position (-2, -0.5)

-1
-3 -2 -1 0 1 2 3
-  t  

Figure.7 Example for controlling the axes

To take a closer look at an interesting part of a plot, the zoom command can be used. Afterwards
it is possible to zoom by marking this part with the mouse. The grid command is used to turn a
grid on and off.

3.5 FLOW CONTROL


Computer programming languages offer possibilities to allow the programmer to control the flow
of command execution. This flow control is based on decision making structures. Some of the
most important structures are the for-loop, the while-loop and the if-else-end-structure. Since the
constructions often affect several Matlab commands, they are mostly used in M-files (see also 1.6).
The for-loop repeats a group of statements a fixed, predetermined number of times.
>> for x = array
commands...
end
The commands... between for and the end statements are executed one time for every column in
array. For example
>> for k = 1:10
z(k) = 2 * i;
end
>> z
z = [ 2 4 6 8 10 12 14 16 18 20 ]
It is a good idea to indent the loops for readability, especially when they are nested.
>> for l = 1:5
for m = 1:8
H(l,m) = 1/(l+m);
end
end
While the for-loop evaluates a group of commands a fixed number of times, a while-loop evaluates
a group of statements and indefinite number of times. The general form of a while-loop is
>> while expression
commands...
end
The commands... between the while and the end statements are executed as all elements in
expression are true (nonzero). For example
>> a = 1; b = 10;
>> x = 1:10;
>> while (a =< b)
z(a) = x(b-a);
a = a+1;
end
>> z
z = [ 10 9 8 7 6 5 4 3 2 1 ]
Many times, sequences of commands must be conditionally evaluated. In Matlab this is provided
by the if-else-end construction.
>> if expression
commands1...
else
commands2...
end
The commands1... between the if and the else statements are evaluated if all elements in expression
are true (nonzero). Alternatively the commands2... between the else and the end statements are
executed. For example
>> a = 5;
>> if a > 0
c = 2*a;
else
c = -2*a;
end
>> c
c = 10

3.6 WORKING WITH MATLAB


For simple problems, entering requests at the Matlab prompt in the command window is fast and
efficient. However, as the number of commands increases, or whenever a change of value of one
or more variables with a reevaluation is desired, typing at the Matlab prompt becomes tedious.
Matlab allows to place Matlab commands in a simple text file, and by telling Matlab to open this
file, the stored commands are evaluated one-by- one as if they were just typed in. Those files are
called M-files. There are two kinds of M-files:
 Scripts, which do not accept input arguments or return output arguments.
 Functions, which can accept input arguments and return output arguments. Internal
variables are local to the function. The only difference in the syntax of a Script-file and a
Function-file is the first line. The first line in a Function-file starts with the keyword
function followed by the list of output arguments, an equals sign, the name of the function
and ending with the list of input variables enclosed in parentheses and separated by
commas. If the function has multiple output arguments, the output argument list must be
enclosed in square brackets, e.g.:
function [x,y,z] = cosytrans(theta, phi, rho)
In a Script-file there is no predefined syntax for the first line.
To create or edit an M-file in the environment of Linux the command nedit can be used to start a
text editor. The command nedit must be typed at a Linux command window. The use of this editor
is very simple and the most important commands can be found in top-down-menus.
Another important aspect concerning the work with Matlab should be mentioned here. The
commands presented in this paper were introduced without a concluding semicolon. Therefore, a
response to the commands occurs at the command prompt. So entering a new variable causes a
repetition of the variable name and its values. Sometimes it is much better to avoid this repetition
especially in large M-files since a load of information would appear on the screen and the really
interesting data might get lost within this load. To suppress this response a concluding semicolon
must be entered after the command, e.g.:
>> a = 0:5
leads to the response
a=012345
while
>> a = 0:5;
generates the same array, but does not display it.
Whenever there is a question about Matlab, the best way to solve it, is to use the Matlab help
command which is a powerful tool searching within a huge data base. Just type help at the
command prompt. A list of the main topics will be listed. By typing help topic the help can be
specified. Additionally the cross-references help to find the interesting command with its options.
3.7. VECTOR MANIPULATIONS
In Matlab applications it is often necessary to create vectors, to delete elements of given vectors,
to substitute elements in given vectors, to append vectors or to insert a given vector into another
vector. All these methods are discussed in this short tutorial. The corresponding m-files are
available.
Examples
3.7.1 Basic Operations
With the aim to visualize generated vectors, the first thing to do is to define figures and
perhaps subfigures. This is done as follows:
%This m-file demonstrates basic MATLAB line vector manipulations
clear all %=Clear all variables
close all %=close all windows
figure(1);
subplot(211); %upper subfigure
grid on;
box on
hold on;
subplot(212); %lower subfigure
grid on;
box on
hold on;
In the first two lines all variables are cleared and all figures are closed.
Then figure 1 is defined and displayed with an upper and a lower sub-screen, a bounding box and
a grid. With “hold on” all plots are kept on the screen.
The command subplot(m,n,p), or subplot(mnp), breaks the Figure window into an m-by- n matrix
of small axes and selects the p-th axes for the current plot. Thus, subplot(211) creates two rows
and one column of subplots in the current figure and selects the upper subfigure for plotting.
Correspondingly, a command subplot(224) for example would create 2 rows and 2 columns of
subplots in the current figure and selects the lower right
subfigure for plotting.
Notice, that all textstrings preceded by a % character or all lines starting with a % character are
comment lines. Thus, the following strings are not interpreted as Matlab commands
In the next lines some line vectors are defined and plotted:
%After we have defined some general screen settings we start here
%with the demonstration program.
%Methods to define a line vector
%define a line vector with 10 zero elements
a0=zeros(1,10)
%define a line vector with 10 one elements
a1=ones(1,10)
%Defintion of a line vector element by element
a=[0 1 2 3 4 5 6 7 8 9 10];
%same vector using the linspace definition
b=linspace(0,10,11)
%same vector using another definition
b=[0:1:10] or b=[0:10]
In the lines above, several methods to define a line vector are given, i.e. defining a vector with all
zero elements or a vector with all 1 elements or the definition of a vector element by element. The
”linespace(x, y, z)” method defines linearly spaced vector elements with x the first element, with
y the last element and with z the number of elements. Whereas the [first:incr:last] method defines
a row vector with first element the increment value and the last vector element. If no increment
value is given, 1 is assumed as increment.
%visualization of the vector a
subplot(211);
plot(a);
title(’Plot of vector a’);
with the lines above, the vector a is plotted to the upper sub-window. Notice, that the horizontal
axes of the plot(a) command is automatically scaled by the index of the vector a, which starts
always with 1 for the first element and ends with the N-th element, i.e. from 1 to N=11 in this case.
In the following lines the command “fliplr” is used, which arranges all vector elements in reverse
order and the corresponding vector is plotted to the lower sub-window.
%arrange the vector elements in reverse order
c=fliplr(a);
%visualization of the vector c
subplot(212);
plot(c);
title(’Plot of vector c’);
pause
How to join two line vectors into a new one (appending vectors) is shown in the following few
lines. Moreover, a title line is added to the sketch in the lower sub-window. Hold off is used to
overwrite the previous plot in the lower sub-window.
hold off;
%appending vectors
d=[a c];
plot(d);
title(’Plot of vector d’);
grid on;
%which is a trapezoid function
pause;
How to delete single or multiple subsequent elements of a line vector is shown in the following
lines. Before and after carrying out this operation give the following command to the command
window: “length(c)”, which confirms, that the length of the vector is reduced by one.
%Delete the first element of vector c
c(1)=[];
%accordingly we can delete elements 3..6 of vector c using
%c(3:6)=[];
%if we now redefine vector d we get a triangle
d=[a c];
plot(d);
title(’Plot of vector d’);
grid on;
pause;
elete 2 elements starting at the center of vector d
d(11:12)=[];
plot(d);
title(’Plot of vector d’);
grid on;
pause;
%Now we delete more elements from pos 7 to pos 14 and again get a triangle
d(7:14)=[];
subplot(211);
hold off;
plot(d);
title(’Plot of vector d’);
grid on;
The following lines show how to substitute vector elements by other vector elements. To avoid
calculations we can use either the “length()” of the vector to be substituted or the “size()”
definition. Notice, that the size() operation refers always to the matrix dimensions of variables,
because all variables are in principle considered to be matrices. Hence, a line vector is a 1 by N
matrix. Thus, “size(d,1)” is the number of rows = 1 here, “size(d,2)” is the number of columns
(elements of the vector).
3.7.2 Mathematical Operations on Vectors
The operations discussed in the following are usually carried out on all elements of the vector(s).
%Now calculate the sum of all elements of the vector e
fprintf(’Sum of e is: %3.2f\n’,sum(e));
%Now determine the norm of the vector e
fprintf(’norm of e is sum(e.*e): %3.2f or %3.2f\n’,sum(e.*e),e*e’);
Notice, that sum(e.*e) is the same operation as e*e’. Whereas the point multiplication
e.*e carries out the multiplication element by element of the vector e, the e*e’ operation
is in principle a matrix multiplication. If e is a line vector, then e’ is the transposed e-vector, i.e. a
N
column vector and e*e’ is the scalar quantity sum(e.*e) = e
i 1
2
i , with ei the vector elements of

vector e.
The fprintf() command used above creates a formatted string. The principle construction rule of
this command is well known from standard programming languages like C, FORTRAN etc.
t=fprintf(’text %format string(s)\n’, variable(s));
where t is a string variable (which may be omitted), the text string for output and the format
string(s) and perhaps a line break must be enclosed in apostrophes, the format string(s) always
start with a % character followed by the total number of characters to be printed, the . separator
which separates the integer values from the fractions and the number of characters to be printed
after the . separator. The character f, which follows in the format string defines the floating point
format. \n carries out one line break. Separated by a comma, the variable(s) follow(s) in the same
order and with as many variables (or expressions) as format strings are defined.
Greek characters within the text string of fprintf() are generated by the LATEX-notation starting
with a \followed by the name of the Greek character; like for example \Omega, \omega or \Gamma,
\gamma for the corresponding upper- and lower case characters.
%square the elements of vector e or build any power of the
%vector elements of e.
f=e.*e
f=e.^2
subplot(212);
plot(f);
title(’Plot of vector f’);
grid on;
e.*e and e.ˆ 2 show the same results but e.ˆ x is more universal because x may be any power of the
elements of vector e and x can be any real number.

3.7.3 Natural Functions of Vectors


%Natural functions of vectors a plot(sin(a));
%The plot shows a polygon, which does not resemble
%a sine function very much, because the horizontal
%spacing is not fine enough.
%The simple plot(sin(a)) command always connects the precise values
%of the vector components of sin(a) with straight lines. Thus, the plot()
%command always creates a polygon. However, if we create a vector with much
%narrower spacing the corresponding plot result resembles a sine function.
clear all;
a=linspace(0,2*pi,101);
plot(sin(a)); %This is still plotted against the vector index
grid;
pause;
plot(a,sin(a)); %Now sin(a) is plotted versus vector a
pause;
set(gca,’Xlim’,[0,2*pi]);
grid;

The plot of natural functions requires usually a much more narrow spacing of the horizontal
axis. If we use for example our original vector a with eleven elements and plot sin(a), then we get
a polygon which does not very much resemble the sine function.
If we clear all vectors, redefine vector a with 100 intervals between 0 and 2_ and plot it we get a
much better resolution.
The notation plot(a,sin(a)) plots sin(a) versus vector a, which is now a properly scaled function.
“set(gca,’Xlim’,[0,2*pi]);” sets the entire horizontal range of the plot.
“set(gca,’Ylim’,[-2,2]);” would set the vertical range.
Alternatively, we could use the axis() command to fix the vertical and horizontal scale of the plot,
like for example:
axis([0,2*pi,-2,2]) i.e. axis([xmin,xmax,ymin,ymax])
Matlab provides all basic mathematical functions like all trigonometric and exponential functions
and even more specific functions like Bessel, Gamma, Beta functions etc. Type “help elfun” or
“help specfun” to the command window to find the notation for all the build in functions.

3.8 BASIC PLOTTING


3.8.1 Plots with basic functionality
Plot two sine functions with frequency f1 = 200 Hz and f2 = 50 Hz and amplitudes A1 = 1 V and
A2 = 1.5 V within the time interval t=[0,50] ms in the same figure. Use the sampling period T =
10μs.
f1=200; f2=50; T=1e-5; Parameter settings...

Tst=0; Te=5e-2; A1=1; A2=1.5

A vector is defined containing needed sampling time


t=[Tst:T:Te];
instants.
y1=A1*sin(2*pi*f1*t); The first output vector is calculated.

y2=A2*sin(2*pi*f2*t); The second output vector is calculated.

fig1=figure; A figure is opened and its handle is named ’fig1’.

plot(y1); Plots the first output vector versus its indices and connects
subsequent points with lines.

plot1=plot(t,y1); Plots the first output vector versus input vector. Since we
want to change the appearance of this plot later, we need to
define the handle ’plot1’.

xlab=xlabel(’t (in s)’); Displays label on x-axis.

ylab=ylabel(’y (in V)’); Displays label on y-axis.

ti=title(’Sine Functions’); Displays title above the figure.

hold on; The active figure will not be overwritten by the next plot
command.

Note: ’hold off’ will deactivate the effect; ’hold’ toggles


between ’hold on’ and ’hold off’.

Plots the second output vector versus input vector.

Note: ’plot(t,y2,’g–’)’ defines color (here: green) and line


plot2=plot(t,y2,’r--’);
style (here: dashdot) manually; for further information type
’help plot’.

grid on; Activates grid of both x- and y-axis (syntax like ’hold’).

axis([Tst,Te,-1.7,1.7]); axis([xmin xmax ymin ymax]) controls axis scaling.

set(plot1,’linewidth’,’2’); Changes linewidth of first curve.

Note: The same syntax can be used to change other para-


meters like color, fonttype and fontsize of labels etc.; a list

of parameters can found in Matlab help.

set(plot2,’linewidth’,’2’); Changes linewidth of second curve.

leg=legend([plot1,plot2],’A1=1 Displays a legend for the curves with handles ’plot1’ and
V, f1=200 Hz’,’A2=1.5 V,
f2=50 Hz’); ’plot2’.

set(ti,’Fontsize’,13); Changes the font size of the title.

3.8.2 Plots using ‘subplot’


Plot the same sine functions into two subfigures by using the command ‘subplot’.

f1=200; ... fig1=figure; same as in 1.1

sub1=subplot(211); ‘subplot (nr, nc, counter)’ plots a subfigure within the active
figure. The figure is divided into ’nr’ rows and ’nc’ columns
and the last parameters determines the position of the
subfigure (the numbering is row-wise and
1≤counter≤Nr*Nc).

plot1=plot(t,y1); same as in 1.1 ...

xlab1=xlabel(’t (in s)’);

ylab1=ylabel(’y (in V)’);

set(plot1,’linewidth’,2);

grid on;

axis([Tst,Te,-1.7,1.7]);

sub2=subplot(212); Activates the second subfigure (below the first one).


leg1 = legend([plot1],’A1=1 V, Adds legend for the first and second subplot.
f1=200 Hz’);

leg2 = legend([plot2],’A2=2 V,

3.8.3 PROBLEMS
3.8.3.1 Sampling of ’continuous’ waveform
Given is the Matlab routine ‘[s]=waveform(t)’ which generates the periodical signal s(t) with
period T = 20 ms. It is sampled in the time interval t=[0,65]ms with four different sampling
frequencies f1 = 100Hz, f2 = 250Hz, f3 = 500Hz and f4 = 1000Hz. Display in four subfigures the
’continuous’ waveform and the corresponding sampled waveform, respectively. Use for the
sampled waveform the command ’stem’. Moreover, consider following properties of the figures:

General Font Name of subplots: ‘Times’

General Font Size of subplots: 8

x/y-Label: Time (in s) / Amplitude (in V)

Font Name of labels: ‘Times’

Font Size of labels: 11

Linestyle/-color/-width of ’continuous’ dotted / RGB=[0.4,0.9,0.3] / 2


waveform:

Linestyle/-color/-width of sampled solid,’.’ / blue / 1


waveforms:

Axis scaling: x=[0,65]*1e-3, y=[-1.1,1.1]

Legend: ‘continuous’, ‘sampled’

Grid: on
3.8.3.2 Simple 3D-Plots
Plot a two-dimensional Gaussian probability density function fx,y(x, y) with zero mean and
variance 1 within the range x  [−5, 5], y  [−5, 5]:

1  2 x 2  y 2 
1

f x , y  x, y   e (4)
2

3.9 BASIC PLOT ROUTINES


3.9.1 2D-Routines
 plot(X,Y):
Plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the
rows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector,
length(Y) disconnected points are plotted. If X is left out, vector Y is plotted versus its
indices.
 bar(X,Y):
Draws the columns of the M-by-N matrix Y as M groups of N vertical bars. The vector
X must be monotonically increasing or decreasing.
 stairs(X,Y):
Draws a stairstep graph of the elements of vector Y. stairs(X,Y) draws a stairstep graph
of the elements in vector Y at the locations specified in X. The X-values must be in
ascending order and evenly spaced.
 stem(X,Y):
Plots the data sequence Y as stems from the x-axis terminated with circles for the data
value. stem(X,Y) plots the data sequence Y at the values specified in X.
 semilogx(...), semilogy(...), loglog(...):
The same as plot(...), except a logarithmic (base 10) scale is used for the x-axis, y-axis
or both.
 polar(THETA, RHO):
Makes a plot using polar coordinates of the angle THETA, in radians, versus the radius
RHO.
3.9.2. 3D-Routines
 mesh(X,Y,Z,C):
 Plots the colored parametric mesh defined by four matrix arguments. The view
point is specified by view. The axis labels are determined by the range of X, Y and
Z, or by the current setting of axis. The color scaling is determined by the range of
C, or by the current setting of c axis. The scaled color values are used as indices
into the current color-map.
 Surf (X,Y,Z,C): is the same as mesh. The shading model is set by shading.
 Surfl (X,Y,Z,C): is the same as surf(...) except that it draws the surface with highlights
from a light source.
 Contour (Z): is a contour plot of matrix Z treating the values in Z as heights above a plane.
A contour plot is the level curves of Z for some values V. The values V are chosen
automatically. Contour (X,Y,Z): X and Y specify the (x,y) coordinates of the surface as for
surf.
3.10. Random Functions
Continuous Uniform Distribution
Uniformly distributed, continuous random numbers are to be generated and their histograms are
to be discussed.

a=rand(1,100) Rand (x,y) generates a matrix with x rows and y columns, whose
elements are uniformly distributed within the range [0,1].

hist(a); hist(a) plots the histogram. The value range of a is divided into 10
intervals. The number of elements in these intervals is plotted.

a=rand(1,1e5);

hist(a);

hist(a,100); hist(a,N) plots the histogram. The value range of a is divided into

N intervals. The number of elements in these intervals is plotted.


Mostly, random numbers not uniformly distributed within [0,1] but within an arbitrary range [a,b]
are needed:

a=rand(1,1e5);

hist(a,100); a −→ a is RV  [0, 1]

a=rand(1,1e5)+0.5;

hist(a,100); a −→ a is RV  [0.5, 1.5]

a=rand(1,1e5)+n; a −→ a is RV  [n, n+1]

a=2*rand(1,1e5);

hist(a,100); a −→ a is RV  [0, 2]

a=A*rand(1,1e5); a −→ a is RV  [A·0, A·1]

a=A*rand(1,1e5)+N; a −→ a is RV  [N, A+N]

Discrete Uniform Distribution

Now, discrete uniformly distributed random numbers shall be generated.

a=floor(N*rand(x,y)+1); This command generates a matrix with x rows and y


columns, whose elements are uniformly distributed integer
numbers within the range [1...N].

a=floor(20*rand(1,1e5)+1);

hist(a) In order to see the functionality of this command, the


standard resolution of hist is not sufficient.

hist(a,100) Now you can see that values can only take integer values
Gaussian distribution
In the following, continuous, Gaussian distributed random numbers are generated and their
histograms plotted.

b=randn(1,1e5); randn(x,y) generates a matrix with x rows and y columns,


whose elements are normally distributed (Gaussian, zero
mean, variance 1).

hist(b,100) Histogram

x=sqrt(5)*randn(1,1e5)+1; Zero Mean and variance 1 is changed into mean 1 and var 5.
Therefore, x is Gaussian distributed now.

hist(x,100) Histogram
CHAPTER 4

IMPLEMENTATION

4.1 GENERAL

Matlab is a program that was originally designed to simplify the implementation of


numerical linear algebra routines. It has since grown into something much bigger, and it is used to
implement numerical algorithms for a wide range of applications. The basic language used is very
similar to standard linear algebra notation, but there are a few extensions that will likely cause you
some problems at first.

4.2 CODE IMPLEMENTATION


4.3 SNAPSHOTS:
CHAPTER 5
CONCLUSION AND REFERENCES

5.1 CONCLUSION

This paper presents an automatic technique for nuclear segmentation in skin histopathological
images. The technique relies on a bank of gLoG kernels for nuclear seeds detection, and thereafter
on a mRLS with DP method for nuclear contours delineation. The proposed mRLS based technique
first identifies several candidate boundary contours for each nucleus. The gradient, intensity and
shape information are then integrated to determine the optimal boundary from candidate boundary
contours. The Dice coefficient measure is finally applied to resolve severely overlapped nuclei.
Experiments have been thoroughly performed on two datasets of skin microscopic images, which
indicates that the proposed technique is superior to several existing techniques of nuclear
segmentation. In addition, the proposed technique has the advantage of recognizing occluded
nuclear boundaries for overlapped nuclei. Compared with level sets and active contours, the
proposed technique is very efficient and suitable for parallel implementations, which can be used
for processing the image with a large number of cell nuclei. In future we will analyse
morphological and textural features of cell nuclei based on this work, which will help in skin
cancer diagnosis.
5.2 REFERENCES:
[1] J. Byun et al., “Automated tool for the detection of cell nuclei in digital microscopic images:
application to retinal images,” Molecular Vision, vol. 12, pp. 949–960, 2006.
[2] C. Lu et al., “Automated image analysis of nuclear atypia in high-power field histopathological
image,” Journal of microscopy, vol. 258, no. 3, pp. 233–240, 2015.
[3] M. N. Gurcan et al., “Image analysis for neuroblastoma classification: Segmentation of cell
nuclei,” in Proceedings of IEEE International Conference on Engineering in Medicine and
Biology Society (EMBC), 2006, pp. 4844–4847.
[4] S. Petushi et al., “Large-scale computations on histology images reveal grade-differentiating
parameters for breast cancer,” BMC medical imaging, vol. 6, no. 1, p. 1, 2006.
[5] C. Lu et al., “A robust automatic nuclei segmentation technique for quantitative
histopathological image analysis,” Analytical and Quantitative Cytology and Histology, vol. 34,
pp. 296–308, 2012.
[6] H. Fatakdawala et al., “Expectation–maximization-driven geodesic active contour with overlap
resolution (emagacor): Application to lymphocyte segmentation on breast cancer histopathology,”
IEEE Transactions on Biomedical Engineering, vol. 57, no. 7, pp. 1676–1689, 2010.
[7] H. Wang et al., “Clump splitting via bottleneck detection and shape classification,” Pattern
Recognition, vol. 45, no. 7, pp. 2780–2787, 2012.
[8] Q. Wen et al., “A delaunay triangulation approach for segmenting clumps of nuclei,” in
Proceedings of IEEE International Symposium on Biomedical Imaging: From Nano to Macro
(ISBI), 2009, pp. 9–12.
[9] O. Schmitt and S. Reetz, “On the decomposition of cell clusters,” Journal of Mathematical
Imaging and Vision, vol. 33, no. 1, pp. 85–103, 2009.
[10] X. Bai et al., “Splitting touching cells based on concave points and ellipse fitting,” Pattern
recognition, vol. 42, no. 11, pp. 2434–2446, 2009.
[11] H. Kong et al., “Partitioning histopathological images: an integrated framework for
supervised color-texture segmentation and cell splitting,” IEEE Transactions on Medical Imaging,
vol. 30, no. 9, pp. 1661–1677,2011.
[12] L. Zhang et al., “Segmentation of cytoplasm and nuclei of abnormal cells in cervical cytology
using global and local graph cuts,” Computerized Medical Imaging and Graphics, vol. 38, no. 5,
pp. 369–380, 2014.
[13] X. Qi et al., “Robust segmentation of overlapping cells in histopathology specimens using
parallel seed detection and repulsive level set,” IEEE Transactions on Biomedical Engineering,
vol. 59, no. 3, pp. 754–765, 2012.
[14] H. Xu et al., “An efficient technique for nuclei segmentation based on ellipse descriptor
analysis and improved seed detection algorithm,” IEEE Journal of Biomedical and Health
Informatics, vol. 18, no. 5, pp. 1729–1741, 2014.
[15] X. Yang et al., “Nuclei segmentation using marker-controlled watershed, tracking using
mean-shift, and kalman filter in time-lapse microscopy,” IEEE Transactions on Circuits and
Systems, vol. 53, no. 11, pp. 2405–2414, 2006.

Potrebbero piacerti anche