pmeerw's blog

Tweets

Thu, 28 Jun 2012

JPEGmini -- shrinking JPEG images

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

Wed, 30 May 2012

Watermarking of Scalable Video, Citations

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

Mon, 23 May 2011

Back from IH'11

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

Thu, 28 Apr 2011

Implementing Convolutional Codes

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

Change Gnuplot's line type style

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

Thu, 31 Mar 2011

Reviewing highlights

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?
  Very novel.
  Somewhat interesting.
  Yet another paper on...
  Topic is getting old.
  Topic has been done to death.
quite amusing.

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

Fri, 11 Mar 2011

Nonlinear optimization: happy with NLopt

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

Made with PyBlosxom