Friday, February 28, 2014

Independent Component Analysis. ICA Neural Network. Java implementation

Independent component analysis (ICA) aims to solve problem of signals separation from their linear mixture. ICA is a special case of blind source separation, when separation performed without the aid of information (or with very little information) about the source signals or the process of signal mixing.  Although blind source separation problem in general is underdetermined, the useful solution can be obtained under a certain assumptions.

ICA model assumes that there are  independent signals  and some mixing matrix  :

Monday, February 24, 2014

2D Cubic B-spline Interpolation via Digital Filtering. Java example

Image interpolation is very important operation in digital image processing and is used for images scaling and rotation, image compressing, image reconstruction and so on.  
Interpolation algorithms are differentiated by quality and efficiency. Splines introduce powerful instrument for image interpolation providing good images quality and computational efficiency. This is possible by using efficient filtering technique for processing images represented in terms of B-splines basis functions. The B-spline of degree 3 (cubic B-spline) is widely used for performing high-quality interpolation due to its minimum curvature property.
In my previous post 1D Cubic B-spline Interpolation via Digital Filtering. Java example I described 1-d signal interpolation using B-spines basis functions. The image itself is the 2-d signal represented by a set of uniformly spaces sampled values. It's easy to extend splines to higher dimensions  by using tensor-product basis functions. 

Sunday, January 19, 2014

1D Cubic B-spline Interpolation via Digital Filtering. Java example

This post based on my previous post “Introduction to splines. B-spline” . In spline interpolation problem coefficients are determined such as that the function goes through the data points exactly. For splines of degree 0 and 1 the B-spline coefficients are identical to the signal samples For higher-degree splines the procedure is more complicated. 
Traditionally, the B-spline interpolation problem has been approached using a matrix framework and setting up a system of equations, which is then solved using standard numerical techniques. But it was showed by M. Unser [1, 2, 3] that this problem could be solved using simpler digital filtering techniques.

Saturday, January 18, 2014

Introduction to splines. B-spline

This is the introduction post about using splines mathematical apparatus for signal processing. The representation of signals using splines has many useful properties and introduces effective signal processing tool. 

The Spline is a smooth, piecewise-defined polynomial function. Spline has a high smoothness degree at pieces joining points, which are called knots.

Tuesday, July 17, 2012

Real-time signal drawing

I want to introduce simple Java program that performs real-time signal drawing. It based on Model-View-Controller (MVC) framework. I wrote a post about  MVC usage by very simple example.
 
At first, we create a Buffer class, where incoming samples (came from some abstract source) are stored. The idea of how Buffer handles data is shown on Fig.1. The iWrite (iW) index points to cell were new sample is stored. Denote this sample s[0]. The sample that has came before s[0] becomes s[-1], sample before it becomes s[-2] and so on. After new sample saved, the iRead (iR) index increments subsequently to read all samples from newest to oldest to redraw signal on screen. We increment iR to read from s[0] to s[-6]. Repeat that procedure we draw the signal that slide along the screen from right to left.

Thursday, July 12, 2012

FIR filter programming and testing

About FIR (finite impulse response) filter programming in C I have written in my old post. Now I want to show the object-oriented programming approach to solve this task using Java. 

Also there is some improvements: the cyclic buffer is used to convolve filter kernel with  input data samples. It reduces the number of calculations, because there is no need to shift all input data through array where data stored. You just have to put input sample in write place and shift array index (or "pointer" to element).

Monday, February 20, 2012

Electrical impedance tomography - My current results

I want to introduce current results in EIT imaging study that are obtained by me. The developed model, algorithms (that are became the heart of written software) and EIT acquisition system were used to get images on artificial phantom. The Matlab was used to implement the reconstruction algorithm and C++/Java were used to write software to collect data from hardware acquisition system.
The finite element model of object under investigation is showed on Fig.1. The 2-D representation of flat container of round shape was used. It consists of 97 nodes and 160 elements. The 16 electrodes that can be used for measurement or current applying are placed surround the object. The 182 observations were collected.