Being interested how JPEG mini performs and works, I ran some super-scientific experiments with the Lena image. JPEG mini claim to reduce the size of compressed photos by up to 5x while maintaining the perceptual image quality.
I used IJG's cjpeg program for baseline compression (denoted JPEG) with a given JPEG quality. opt. JPEG refers to the optimized Huffman table option of the cjpeg program, smooth JPEG makes use of the smoothing (factor 30) and optimization of cjpeg.
On to the results: JPEG mini succeeds to reduce the JPEG file size, especially for very high quality factors. The perceptual quality is harder to judge, a significant drop in PSNR can be measured.
The scientific aspect is the usage of the Lena image obviously.
posted at: 14:32 | path: /academic | permanent link | 0 comments
I just became aware of a book chapter authored by Dan Grois and Ofer Hadar, Recent Advances in Watermarking for Scalable Video Coding, Watermarking - Volume 2, Intech Open Access, ISBN: 978-953-51-0619-7, edited by Mithun Das Gupta (DOI 10.5772/37543).
The chapter summarizes large parts of my work: nice, thanks. On the other hand, three figures from my papers are redrawn and reproduced and several sentences are restated in full (and cited).
posted at: 21:21 | path: /academic | permanent link | 0 comments
The 13th Information Hiding conference in Prague was very interesting (latest results on fingerprinting and steganography unveilling all secrets of BOSS) and enjoyable thanks to the excellent organization and social program.
Slides are available.
posted at: 16:29 | path: /academic | permanent link | 0 comments
A good online tutorial is Charan Langton's Coding and decoding with Convolutional Codes. (Fig. 10 seems incorrect, however, as three arrows go into one state.)
To visualize a Trellis on paper, I found the following useful:

Available as: .pdf and
.svg
Some code (test.cpp) using
the it++ library for C++ which illustrates the decoding example given in the tutotial:
// compile with
// g++ -Wall -o test test.cpp -litpp
// run with
// ./test
#include <cstdio>
#include <cassert>
#include <itpp/itbase.h>
#include <itpp/itcomm.h>
// example program, following http://www.complextoreal.com/convo.htm
int main() {
unsigned int invR = 2; // inverse rate
unsigned int m = 4; // memory
itpp::bvec u = "1 0 1 1 "; // input bits
std::cout << "uncoded: " << u << "\n";
itpp::Convolutional_Code cc;
itpp::BPSK bpsk;
itpp::ivec generators;
generators.set_size(invR, false);
generators(0) = 15; // polynomials
generators(1) = 13;
printf("constraint length %u\n", m-1);
cc.set_generator_polynomials(generators, m);
itpp::bvec coded_bits = cc.encode_tail(u);
std::cout << "coded: " << coded_bits << "\n";
itpp::vec symbols = bpsk.modulate_bits(coded_bits);
printf("symbols %d\n", symbols.size());
// channel here
itpp::vec received_symbols = symbols + 0.3*itpp::randn(symbols.size());
itpp::bvec decoded_bits = cc.decode_tail(received_symbols);
std::cout << "decoded: " << decoded_bits << "\n";
}
posted at: 17:59 | path: /academic | permanent link | 0 comments
I find Gnuplot's default line type styles (solid, dashed, dotted) quite hard to
distinguish on small figures:
On the left Gnuplot's default line type 2 and 3, on the right the improved version (much better
)!
My solution is to patch the Postscript code produced by Gnuplot; first the original Postscript code:
/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
and here the patched lines:
/LT1 {PL [12 dl1 6 dl2] LC1 DL} def
/LT2 {PL [2 dl1 2 dl2] LC2 DL} def
Here is the .plot file and the original and patched .eps file.
posted at: 17:30 | path: /academic | permanent link | 0 comments
Just finished a review for yet another highly esteemed> journal (which must remain anonymous).
I find the options for
Interest Factor: How interesting is the paper's topic or approach?
quite amusing.
Very novel.
Somewhat interesting.
Yet another paper on...
Topic is getting old.
Topic has been done to death.
Also the due date for the review is ambitious: December 30, 2011, that is 11 month after submission and 10 month after it came across my strained eyes.
posted at: 22:45 | path: /academic | permanent link | 0 comments
Optimization is a mess, so use a library for it - but which?
After looking at several open-source candidates, I settled with NLopt. Strong points are
posted at: 23:43 | path: /academic | permanent link | 0 comments