An object ImagePlus is composed of several parts whose the most important is the pixel array located in another object: the ImageProcessor.

#### 1. The ImageProcessor

To work with the pixel array, first, you have to get the object*ImageProcessor*

```
var imp = IJ.openImage("http://wsr.imagej.net/images/blobs.gif");
var ip = imp.getProcessor(); // Get the ImageProcessor...
```

and now plenty of

##### 1.1. The pixels

In*ImageProcessor*, the methods

`getPixel(..)`

and `putPixel(..)`

allow to read and write pixels in the image. ```
// Read pixel value in `blobs.gif` at (50,100)
var x = 50;
var y = 100;
ip.getPixel(x,y); // ← 48
// Write the value 255 in the pixel at (50,100)
ip.putPixel(x,y,255);
ip.getPixel(x,y); // ← 255
```

Fig.1: Write a white pixel (value: 255) in an image via its ImageProcessor |

`set(..)`

methods:`set(x,y,int_value)`

`setf(x,y,float_value)`

- putRow(..): Set a row of pixels
- putColumn(..): Set a column of pixels

##### 1.2. Mathematical operations

Some mathematical operations are available in the*ImageProcessor*like

`add(k)`

, `multiply(k)`

, `abs()`

, `ln(k)`

, `log(k)`

, `and(k)`

, `or(k)`

, `xor(k)`

where k is a value.Here is a small example with the

*simple*implementation of

`normalize(..)`

:```
function normalize(ip,min,max) {
// Assume that image is 8-bit
var delta = max - min;
ip.add(-min);
ip.multiply(255/delta);
return ip;
}
var imp = IJ.getImage();
var ip = imp.getProcessor();
var stats = imp.getStatistics(); // basic stats among them: min and max
var ip = normalize(ip,stats.min,stats.max);
imp.draw();
```

Note: However, if you want to compute an operation between two images, you must use theImageCalculatorobject.

##### 1.3. Transforms

All the classical geometric transforms are available in the*ImageProcessor*object:

- rotate
- rotateLeft
- scale
- translate

```
var ip = imp.getProcessor();
ip.scale(0.5,0.5); // Warning: Window size remains the same
ip.rotate(45); // angle in degree
ip.translate(20,100); // shifts in pixels
```

##### 1.4. Basic image processing

convolveerode, dilate

## No comments:

## Post a Comment