High Definition Image Compression Technology
The transport of images across communication paths is an expensive process. Image compression provides an option for reducing the number of bits in transmission. This in turn helps increase the volume of data transferred in a space of time, along with reducing the cost required. It has become increasingly important to most computer networks, as the volume of data traffic has begun to exceed their capacity for transmission. Traditional techniques that have already been identified for data compression include: Predictive coding, Transform coding and Vector Quantization. In brief, predictive coding refers to the decorrelation of similar neighbouring pixels within an image to remove redundancy. Following the removal of redundant data, a more compressed image or signal may be transmitted. Transform-based compression techniques have also been commonly employed. These techniques execute transformations on images to produce a set of coefficients. A subset of coefficients is chosen that allows good data representation (minimum distortion) while maintaining an adequate amount of compression for transmission. The results achieved with a transform-based technique is highly dependent on the choice of transformation used (cosine, wavelet, Karhunen-Loeve etc). Finally, vector quantization techniques require the development of an appropriate codebook to compress data. Usage of codebooks do not guarantee convergence and hence do not necessarily deliver infallible decoding accuracy. Also the process may be very slow for large codebooks as the process requires extensive searches through the entire codebook. Following the review of some of the traditional techniques for image compression, it is possible to discuss some of the more recent techniques that may be employed for data compression.
Artificial Neural Networks (ANNs) have been applied to many problems, and have demonstrated their superiority over traditional methods when dealing with noisy or incomplete data. One such application is for image compression. Neural networks seem to be well suited to this particular function, as they have the ability to preprocess input patterns to produce simpler patterns with fewer components. This compressed information (stored in a hidden layer) preserves the full information obtained from the external environment. Not only can ANN based techniques provide sufficient compression rates of the data in question, but security is easily maintained. This occurs because the compressed data that is sent along a communication line is encoded and does not resemble its original form. There have already been an exhaustive number of papers published applying ANNs to image compression. Many different training algorithms and architectures have been used. Some of the more notable in the literature are: nested training algorithms used with symmetrical multilayer neural networks, Self organising maps, for codebook generation, principal component analysis networks, backpropagation networks, and the adaptive principal component extraction algorithm. Apart from the existing technology on image compression represented by series of JPEG,MPEG and H.26x standards, new technology such as neural networks and genetic algorithms are being developed to explore the future of image coding. Successful applications of neural networks to vector quantization have now become well established, and other aspects of neural network involvement in this area are stepping up to play significant roles in assisting with those traditional technologies.
Index Terms: Matlab, source, code, neural networks, image compression, image processing, image reconstruction, codebook, quantization.
![]() |
Figure 1. Compressed image |
||||||||||||||
|
A simple and effective source code for Image Compression With Neural Networks. |
|||||||||||||||
| |
Demo code (protected P-files) available for performance evaluation. Matlab Image Processing Toolbox, Matlab Communications Toolbox and Matlab Neural Network Toolbox are required.
|
||||||||||||||
|
Release
|
Date
|
Major features
|
|||||||||||||
|
1.0
|
2008.10.17
|
|
|||||||||||||
|
We recommend to check the secure connection to PayPal, in order to avoid any fraud. |
|||||||||||||||
|
Image Compression With Neural Networks – Click here for your donation. In order to obtain the source code you have to pay a little sum of money: 95 EUROS (less than 133 U.S. Dollars).
|
|||||||||||||||
|
Once you have done this, please email us luigi.rosa@tiscali.it
As soon as possible (in a few days) you will receive our new release of Image Compression With Neural Networks. Alternatively, you can bestow using our banking coordinates:
|
|||||||||||||||
The authors have no relationship or partnership with The Mathworks. All the code provided is written in Matlab language (M-files and/or M-functions), with no dll or other protected parts of code (P-files or executables). The code was developed with Matlab 2006a. Matlab Image Processing Toolbox, Matlab Communications Toolbox and Matlab Neural Network Toolbox are required. The code provided has to be considered “as is” and it is without any kind of warranty. The authors deny any kind of warranty concerning the code as well as any kind of responsibility for problems and damages which may be caused by the use of the code itself including all parts of the source code.
Popularity: 1% [?]
RandSphere: Generating Random Points On The Surface Of An nD Sphere
A few days ago I was in need of uniformly random points generation on the surface of sphere. I suddenly discovered that common parametrization with 2 angles is useless, it gathers too many points in the poles. At MathWorld you can find the complete demonstration, here the main lines:
To pick a random point on the surface of a unit sphere, it is incorrect to select spherical coordinates
and
from uniform distributions
and
, since the area element
is a function of
, and hence points picked in this way will be “bunched” near the poles (left figure above).
To obtain points such that any small area on the sphere is expected to contain the same number of points (right figure above), choose
and
to be random variates on
. Then
|
(1)
|
|||
|
(2)
|
gives the spherical coordinates for a set of points which are uniformly distributed over
. This works since the differential element of solid angle is given by
|
(3)
|
The distribution
of polar angles can be found from
|
(4)
|
by taking the derivative of (2) with respect to
to get
, solving (2) for
, and plugging the results back in to (4) with
to obtain the distribution
![]()
As we can see the distribution tends to infinite at the poles. With more research I discovered there are several There are several algorithms to generate random point on a sphere. A good tutorial can be found here.
At the end I have chosen the trig method, below you can find the Matlab function.
Update: 18/06/2010, According to Ed Hoyle comments the code has become n-dimensional
function X=RandSphere(N,dim) % RANDSPHERE % % RandSphere generates uniform random points on the surface of a unit radius % N-dim sphere centered in the origin . This script uses different algorithms % according to the dimension of point: % % -2D: random generation of theta [0 2*pi] % -3D: the "trig method". % -nD: Gaussian distribution % % SYNOPSYS: % % INPUT: % % N: integer number representing the number of points to be generated % dim: dimension of points, if omitted 3D is assumed as default % % OUTPUT: % % X: Nxdim double matrix representing the coordinates of random points % generated % % EXAMPLE: % % N=1000; % X=RandSphere(N); % hold on % title('RandSphere') % plot3(X(:,1),X(:,2),X(:,3),'.k'); % axis equal % % See also radnd, randi, randn, RandStream, RandStream/rand, % sprand, sprandn, randperm,RandStream/getDefaultStream. % %Authors: Luigi Giaccari,Ed Hoyle %errors check if nargin<1 %nargin >2 is handled by Matlab itself error('At least one input required') end if nargout~=1 error('One and ony one output required') end if N<=0 error('Negative number of points') end if round(N)~=N warning('N should be an integer. It will be rounded') N=round(N); end if nargin==1 dim=3;%default value for dimension of points end switch dim case 3 %3D %trig method X=zeros(N,dim);%preallocate X(:,3)=rand(N,1)*2-1;%z t=rand(N,1)*2*pi; r=sqrt(1-X(:,3).^2); X(:,1)=r.*cos(t);%x X(:,2)=r.*sin(t);%y case 2 %2D %just a random generation of theta X(:,2)=rand(N,1)*2*pi;%theta: use y as temp value X(:,1)=cos(X(:,2));%x X(:,2)=sin(X(:,2));%y otherwise %nD %use gaussian distribution X=randn(N,dim); X=bsxfun(@rdivide,X,sqrt(sum(X.^2,2))); end
Popularity: 2% [?]
Jacket Webinar on Rapid Application Development!
|
||
|
Popularity: 1% [?]



















































