High Definition Image Compression Technology

June 20, 2010 by Luigi Rosa · Leave a Comment
Filed under: Image processing 
VN:F [1.8.8_1072]
Rating: +1 (from 1 vote)
VN:F [1.8.8_1072]
Rating: 10.0/10 (2 votes cast)

.: Click here to download :.

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.
This donation has to be considered an encouragement to improve the code itself.

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:

Name :
Luigi Rosa
Address :
Via Centrale 35 67042 L’Aquila Italy
Bank name:
Poste Italiane
Bank address:
Viale Europa 190 00144 Roma Italy
IBAN (International Bank Account Number) :
IT-50-V-07601-03600-000058177916
BIC (Bank Identifier Code) :
BPPIITRRXXX

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.

VN:F [1.8.8_1072]
Rating: 10.0/10 (2 votes cast)
VN:F [1.8.8_1072]
Rating: +1 (from 1 vote)

Popularity: 1% [?]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Live
  • PDF
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Add to favorites
  • email
  • MySpace
  • RSS

RandSphere: Generating Random Points On The Surface Of An nD Sphere

June 17, 2010 by Luigi Giaccari · 10 Comments
Filed under: Utility 
VN:F [1.8.8_1072]
Rating: +1 (from 1 vote)
VN:F [1.8.8_1072]
Rating: 9.3/10 (3 votes cast)

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 theta and phi from uniform distributions theta in [0,2pi) and phi in [0,pi], since the area element dOmega=sinphidthetadphi is a function of phi, 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 U and V to be random variates on (0,1). Then

theta = 2piu
(1)
phi = cos^(-1)(2v-1)
(2)

gives the spherical coordinates for a set of points which are uniformly distributed over S^2. This works since the differential element of solid angle is given by

  dOmega=sinphidthetadphi=-dthetad(cosphi).
(3)

The distribution P_phi of polar angles can be found from

 P_phidphi=P_v|(dv)/(dphi)|dphi,
(4)

by taking the derivative of (2) with respect to v to get dphi/dv, solving (2) for v, and plugging the results back in to (4) with P_v=1 to obtain the distribution

 P_phi=1/2sinphi.

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

Download Now

VN:F [1.8.8_1072]
Rating: 9.3/10 (3 votes cast)
VN:F [1.8.8_1072]
Rating: +1 (from 1 vote)

Popularity: 2% [?]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Live
  • PDF
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Add to favorites
  • email
  • MySpace
  • RSS

Jacket Webinar on Rapid Application Development!

June 17, 2010 by Admin · Leave a Comment
Filed under: NewsGroup 
VN:F [1.8.8_1072]
Rating: 0 (from 0 votes)
VN:F [1.8.8_1072]
Rating: 0.0/10 (0 votes cast)
Live Webinar:
June 22, 2010  11 to 12:30 EDT
AccelerEyes and Nvidia invite you to this free webinar on Rapid Application Development for GPGPUs with Jacket.

The webinar will cover:

  • Performance and Productivity with Jacket
  • Development with Jacket and MATLAB
  • Optimizing GPU applications
  • Deploying applications to the enterprise

This session will provide valuable insight to anyone interested in leveraging GPU technology without the need to program with C, C++, CUDA or other low level APIs.

Register Now as attendence is limited.

If you have any questions you can email sales@accelereyes.com or visit the AccelerEyes website at http://www.accelereyes.com

VN:F [1.8.8_1072]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.8_1072]
Rating: 0 (from 0 votes)

Popularity: 1% [?]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Live
  • PDF
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Add to favorites
  • email
  • MySpace
  • RSS

Next Page »