Thursday, December 29, 2011

README: how this blog is organized...




That's a post for beginners to show how my blog 'crazybiocomputing' is structured and connected to the mini-games of the genuine 'CrazyBioComputing' [Link] ...

Processing


Table of Contents

How can I prepare an image for further analysis , How can I remove noise and improve my signal? How can I detect interesting features ? All these questions can be solved by using various functions and tools available in ImageJ.

Monday, December 26, 2011

Exploring Gradient Direction



When working with gradient (for edge detection), it's rather interesting to visualize its orientation by drawing arrows and that's a good opportunity to try my previously published function drawArrow(...) [see post].

Saturday, December 24, 2011

Test image: bump and hill




A simple test image useful to try various algorithms of gradient, edge detection,...

Friday, December 23, 2011

Drawing arrows in IJ script



Drawing arrows in a ImageJ macro/script is sometimes useful to display direction of a feature (oriented lines of interest, gradient,etc.)  but this simple drawing isn't so straightforward...


Thursday, December 22, 2011

CMY(K) color image


CMY (or its variant CMYK) color space uses as primary colors: cyan, magenta, and yellow.
This color space used by printers is interesting because, this is an example of a subtractive color model. When you add color(s), you converge towards black color.

Tuesday, December 20, 2011

3D curves: the toric solenoids




After learning how to build and display spheres in 3D with ImageJ [see post], this post describes how we can use them for drawing a 3D curve...

Tuesday, December 13, 2011

Improving the Dissolve effect





In a previous post [Link], the fade-in, fade-out, and dissolve effects were described and computed in ImageJ for static images. Here are two main improvements...

3D models: the sphere



When working in 3D, there is always a need of 3D basic models to try new algorithms or to use them as building blocks. In this post, we'll see how to build a sphere and how we can move it in 3D without any additional plugins.

Tuesday, December 6, 2011

Using images as arrays in script


In my previous posts Using arrays in script... [TOC],  we have seen in Part 1 how to store data in arrays using the built-in function newArray(...)  and in Part 2, the use of Table windows (Results [Link] or any Table window [Link]). Here I'll describe how data storage can be done via images and how this technique is powerful for large arrays.

Monday, December 5, 2011

Fade-in, Fade-out, Dissolve video effects





When working on videos (stacks in ImageJ), it is always interesting to make transitions between video clips to finalize a small movie .... and that's possible with ImageJ.

Friday, December 2, 2011

The sieve of Eratosthenes



Finding prime numbers is a good exercise to improve your skills in the programming scripting language of ImageJ. Moreover, that's a good opportunity to use a 2D image as a temporary array.


Monday, November 28, 2011

Exploring colors and grays with ImageJ



 How are stored the grays and colors in a digital image? This simple question is explored in this post thanks to the IJ programming language.

Friday, November 25, 2011

Numbers: binary, decimal, hexadecimal


Numbers used by computers and by extension by programming languages can be represented in different radix (base). Usually, the decimal notation is the most convenient - specially for human beings - but in certain circumstances, it's better to use the binary or hexadecimal notations.

Tuesday, November 22, 2011

Color wheel


Painters and computer artists, often use a color wheel which is composed of color hues arranged along a circle. There are some interesting features in such a presentation of this color table (also available in the HSV/HSL color space): primary, secondary, and complementary colors...


Tuesday, November 15, 2011

Indexed color images



After RGB images, indexed color images are another way to display/work with colors in ImageJ.



Digital Image


Table of contents of Digital Image


In image processing softwares like ImageJ, what's a digital image? how the grays, colors are encoded? how these data are stored in a file?

Thursday, November 10, 2011

Color images: RGB image



After the binary [Link] and gray-level images, the color images represent the last (and the most sophisticated) family of images used in image processing softwares. Colors are obtained by the combination of three primary colors. The latter may be different depending of the device displaying/printing the image.
In ImageJ, the most usual color images are encoded with the RGB color space.

Drawing a chessboard from a 2x2 unit cell



In my series Drawing a chessboard, a simple way to build the chessboard from a 2x2 unit cell. 

Thursday, October 27, 2011

Drawing a chessboard using boolean operators



A small use of boolean operators to draw my favorite chessboard and also a good example to use other functions like geometrical transforms.

Tuesday, October 25, 2011

Erosion in mathematical morphology



In mathematical morphology (MM) [see TOC], the basic operators are the erosion and dilation. Through several examples, we'll see what is the erosion and what we can do with it ...


Monday, October 24, 2011

Drawing a chessboard: Table of Contents



Through several examples, this series Drawing a chessboard - a simple and graphical object - is a very good opportunity to explore the built-in functions of the scripting language and the various operations and tools available in the ImageJ menus.

Binary images


Binary images (black and white) are everywhere in ImageJ, they are required in Analyze > Analyze Particles, have their own operators and functions.
This post explains what they are and how to use them...

Mathematical morphology


Mathematical morphology (MM) [Wikipedia] is a great toolbox for image processing. In ImageJ, most of these operations are available for binary images and are often used to prepare an image before analysis. Moreover, the same operations can be used for gray-level images offering new functionalities in terms of filtering, segmentation,etc.

Thursday, October 20, 2011

Black and White, TRUE or FALSE?



When playing with binary images in ImageJ, that's not really simple to remember if TRUE corresponds to white or black (specially, if you use a lot of different binary functions). Here are simple examples to try to understand how it works.

Saturday, October 8, 2011

Drawing a chessboard using ImageJ array



My chessboard series continues with a new script based on arrays and how we can use them in ImageJ.


Tuesday, October 4, 2011

Boolean operators




One of the basic functions for binary images (containing TRUE and FALSE pixels) are the boolean operators useful to manipulate this kind of images.


Answers

Here is a collection of answers to exercises I post(ed). This post is unreadable as is...

Saturday, September 24, 2011

Test image: sawtooth wave




After the square wave [see post], another test image whose plot profile corresponds to a sawtooth wave [Wikipedia].

Friday, September 23, 2011

Test image: square wave



To try new features of ImageJ or debug a macro/script, there is always a need of test images. Here is a simple script to create one of them...

Thursday, September 15, 2011

Fourier Series

Understanding the Fourier Transform is not trivial. Here is a simpler approach (only for periodic signals) from the same author termed the Fourier Series.
Joseph Fourier [Wikipedia] demonstrated that any periodic function could be decomposed in a series of sine and cosine functions.

Wednesday, September 14, 2011

Exploring an image file: dump

Understanding the architecture of an image file requires the use of a small utility program (in Unix world, 'od' is one of them) allowing to read byte per byte the contents of such a file. For this purpose, I developed a tiny image dump [Link] ...

Friday, September 9, 2011

Using arrays (part 2.1): Table window


The Results window [see post] is a 'must' in ImageJ for storing numbers like a spreadsheet and also contains tools to explore the data. A more generalized multicolumn window exists in ImageJ termed the Table window which is very useful specially if you need to play with strings and numbers.


Using arrays in script (part 2.0): Results window

If the Array and List data structures are too limited in one of your IJ script, there is an interesting alternative for storing a data collection: The Results which is a specific window (tool?) working like a very basic spreadsheet...

Friday, September 2, 2011

Learning ImageJ scripting language


T a b l e   o f   c o n t e n t s

Once you are familiar with the various tools and menus of ImageJ, it's time to move to the dark side of the force and to start using the programming features of IJ via its macro/script. That's really useful specially if you have repetitive tasks and/or if you need precise data exploration.
Don't worry, learning a programming language is not so complicated and ...May the Force be with you...

Drawing a chessboard v2.1

This version of my series Drawing a chessboard is a minor update of the version 2.0 and is only different because it contains one loop to scan the image.

Drawing a chessboard v2.0



Another version in my series Drawing a chessboard. This is a little bit simpler than the previous one...

My first ImageJ macro/script

Once you are familiar with the various tools and menus of ImageJ, it's time to move to the dark side of the force and to start using the programming features of IJ via its macro/script. That's really useful specially if you have repetitive tasks and/or if you need precise data exploration.
Don't worry, learning a programming language is not so complicated and ...May the Force be with you...

Tuesday, August 23, 2011

ImageJ script: the loop

One of the main purposes of a ImageJ macro/script is to perform repetitive tasks. In programming languages (and in IJ script), this can be done by using a specific iterative mechanism: the loop.

Drawing a chessboard v3.0



The ImageJ scripting language is really powerful. Here is an application in my series Drawing a chessboard...

Drawing a chessboard with IJ script

Drawing a chessboard is a good exercise because you need all the basic tools of programming language: loops and conditional statement.

Monday, August 22, 2011

Using an iterator in ImageJ

Scanning all the pixels of an image to modify values or get some features is a common task when you develop scripts in ImageJ ... unfortunately, if your code contains too many loops, it will become difficult to read and debug . This can be improved using the function Process > Math > Macro... mimicking an iterator object found in modern programming languages.

Thursday, August 11, 2011

Conserver un historique de ses commandes: 'Recorder'

Après divers tâtonnements (une vingtaine de fenêtres sont ouvertes), l'application de plusieurs traitements (correction de luminosité / contraste, filtres, etc.), votre image est correctement traitée et son analyse vous donne entière satisfaction ... mais au moment de refaire la même chose sur une autre image, vous ne vous souvenez plus de la procédure et des paramètres que vous avez utilisés.
Il existe pourtant un moyen - peu utilisé - pour garder un historique de ces commandes: le Recorder.  C'est aussi un bon moyen de s'initier à la programmation avec le langage Macro d'ImageJ.