Skip to content

Commit 3f2b8e3

Browse files
committed
Port some documents from the old website.
1 parent 596288a commit 3f2b8e3

10 files changed

Lines changed: 263 additions & 4 deletions

File tree

_config.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,19 @@ github_username: ij-plugins
2323

2424
# Build settings
2525
markdown: kramdown
26-
theme: minima
27-
#theme: just-the-docs
26+
#theme: minima
27+
theme: just-the-docs
28+
#remote_theme: pmarsceill/just-the-docs
29+
color_scheme: "dark"
2830
plugins:
2931
- jekyll-feed
3032

33+
# just-the-docs options
3134
search_enabled: true
35+
# Aux links for the upper right navigation
36+
aux_links:
37+
"IJ-Plugins on GitHub":
38+
- "//github.com/ij-plugins"
3239

3340
# Exclude from processing.
3441
# The following items will not be processed, by default. Create a custom list
23.2 KB
Loading
26.3 KB
Loading
113 KB
Loading

docs/ijp-toolkit/3D-IO/3D-IO.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
layout: default
3+
title: 3D IO
4+
nav_order: 1
5+
parent: IJ-Plugins Toolkit
6+
has_children: true
7+
permalink: /docs/ijp-toolkit/3D-IO
8+
---
9+
10+
## 3D IO
11+
12+
Plugins for reading and writing in 3D formats:
13+
14+
* **MetaImage Reader** - reads from MetaImage format used by <a href="http://itk.org/">ITK
15+
* **MetaImage Writer** - writes a 2D image or a 3D stack to MetaImage format used by <a href="http://itk.org/">ITK</a>.
16+
Option <strong>Save in single file</strong> indicates whether the image should be saved in a single file
17+
(extension *.mha) or the header and the image data should be saved in separate files (with extensions *.mhd
18+
and *.raw respectively.)
19+
* **VTK Reader** - reads format used by <a href="http://vtk.org/">VTK</a>.
20+
* **VTK Writer** - writes a 2D image or a 3D stack in format used by <a href="http://vtk.org/">VTK</a>.
21+
* **Export as STL** - interprets intensity in 2D image as height and writes the height surface in
22+
<a href="http://en.wikipedia.org/wiki/STL_%28file_format%29">STL format</a>. Data can be saved either in
23+
<samp>binary</samp> or <samp>ascii</samp> (text) format. Binary format produces much smaller files.
24+
Option <strong>Save sides</strong> enables generation of the mesh for sides and the bottom.
25+
26+
Plugins install under `Plugins > 3D IO` menu.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
layout: default
3+
title: Export as STL
4+
nav_order: 2
5+
grand_parent: IJ Plugins Toolkit
6+
parent: 3D IO
7+
permalink: /docs/ijp-toolkit/3D-IO/Export-as-STL
8+
---
9+
10+
## Export as STL
11+
12+
<strong>Export as STL</strong> - interprets intensity in 2D image as height and writes the height surface in
13+
<a href="http://en.wikipedia.org/wiki/STL_%28file_format%29">STL format</a>. Data can be saved either in
14+
<samp>binary</samp> or <samp>ascii</samp> (text) format. Binary format produces much smaller files.
15+
Option <strong>Save sides</strong> enables generation of the mesh for sides and the bottom.
16+
17+
The plugins install under <tt>Plugins</tt> &gt; <tt>3D IO</tt> &gt; <tt>Export as STL</tt>menu.
18+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
layout: default
3+
title: 3D Toolkit
4+
nav_order: 2
5+
parent: IJ-Plugins Toolkit
6+
has_children: true
7+
permalink: /docs/ijp-toolkit/3D-Toolkit
8+
---
9+
10+
## 3D Toolkit
11+
12+
Those filters interpret an image stack as a 3D image.
13+
14+
<ul>
15+
<li><strong>Connected Threshold Grower</strong> - region growing segmentation (<a
16+
href="example-connected-threshold-growing.html">example</a>).
17+
</li>
18+
<li><strong>Auto Clip Volume</strong> - Auto volume clipping to a region that contains non-zero pixels.</li>
19+
<li><strong>Morphological Dilate 3D</strong> - grey level dilation (max).</li>
20+
<li><strong>Morphological Erode 3D</strong> - grey level erosion (min).</li>
21+
<li><strong>Median 3D</strong> - correctly processes all pixes including borders.</li>
22+
</ul>
23+
24+
Plugins install under <tt>Plugins</tt> &gt; <tt>3D Toolkit</tt> menu.
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
---
2+
layout: default
3+
title: Connected Threshold Growing Example
4+
nav_order: 2
5+
grand_parent: IJ Plugins Toolkit
6+
parent: 3D Toolkit
7+
permalink: /docs/ijp-toolkit/3D-Toolkit/example-connected-threshold-growing
8+
---
9+
10+
## Connected Threshold Growing Example
11+
12+
13+
The Connected Threshold Growing plugin can be used to perform
14+
segmentation of 2D and 3D images. The plugin accepts 8 bit and 16 bit gray
15+
images. To perform segmentation you specify location of seed point (x,y,z),
16+
and minimum and maximum limits on pixel intensity. Segmented region will
17+
contain all pixels connected to the seed point which intensity is within
18+
minimum/maximum intensity limits.</p>
19+
20+
![Grow options dialog]({{ site.url }}/assets/images/ijp-toolkit/3D-Toolkit/grow_options_dialog.jpg)
21+
22+
The example demonstrates segmentation of a 3D MRI image from
23+
<a href="http://www.bic.mni.mcgill.ca/brainweb/">BrainWeb Project</a>.
24+
Here is slices 31 of an image used in the example:
25+
26+
![Input image]({{ site.url }}/assets/images/ijp-toolkit/3D-Toolkit/brainweb1_31.jpg)
27+
28+
The image was segmented using only 7 seed points (white matter, gray
29+
matter, skull, left eye, left lens, right eye, and right lens). White and
30+
gray matter regions were combined before 3D rendering using ImageJ image
31+
calculator.
32+
(<a href="SmoothRender.java.html">SmoothRender.java</a>)
33+
34+
![Segmented image]({{ site.url }}/assets/images/ijp-toolkit/3D-Toolkit/segmented_brainweb.jpg)
35+
36+
The above 3D rendering was performed using following Java code and VTK library:
37+
38+
```java
39+
import vtk.*;
40+
41+
import javax.swing.*;
42+
import java.awt.*;
43+
import java.awt.event.WindowAdapter;
44+
import java.awt.event.WindowEvent;
45+
46+
public class SmoothRender extends JPanel {
47+
48+
static {
49+
// Load VTK MarchingCubes library, rest is loaded by vtkPanel
50+
System.loadLibrary("vtkPatentedJava");
51+
}
52+
53+
private final String PREFIX = "/data/";
54+
55+
/**
56+
* Constructor.
57+
*/
58+
public SmoothRender() {
59+
// Setup VTK rendering panel
60+
vtkPanel renWin = new vtkPanel();
61+
62+
vtkRenderer ren = renWin.GetRenderer();
63+
64+
// Create actors for each segmented region
65+
66+
vtkActor skullActor = createActor(PREFIX + "brainweb1_skull_smooth.vtk", 127, 0.5, 500);
67+
skullActor.GetProperty().SetOpacity(0.25);
68+
skullActor.GetProperty().SetColor(1, 1, 1);
69+
skullActor.GetProperty().SetDiffuse(0.75);
70+
skullActor.GetProperty().SetSpecular(0.75);
71+
ren.AddActor(skullActor);
72+
73+
vtkActor brainActor = createActor(PREFIX + "brainweb1_both_matters.vtk", 127, 0.5, 500);
74+
brainActor.GetProperty().SetColor(0.9961, 0.75, 0.1);
75+
brainActor.GetProperty().SetSpecular(1);
76+
ren.AddActor(brainActor);
77+
78+
vtkActor rightEyeActor = createActor(PREFIX + "brainweb1_right_eye.vtk", 127, 0.5, 500);
79+
rightEyeActor.GetProperty().SetColor(1, 1, 1);
80+
rightEyeActor.GetProperty().SetDiffuse(0.95);
81+
rightEyeActor.GetProperty().SetSpecular(0.1);
82+
ren.AddActor(rightEyeActor);
83+
84+
vtkActor rightRetinaActor = createActor(PREFIX + "brainweb1_right_eye_lens.vtk", 127, 0.10, 100);
85+
rightRetinaActor.GetProperty().SetColor(0.1, 0.1, 0.1);
86+
rightRetinaActor.GetProperty().SetSpecular(1);
87+
ren.AddActor(rightRetinaActor);
88+
89+
vtkActor leftEyeActor = createActor(PREFIX + "brainweb1_left_eye_smooth.vtk", 127, 0.5, 500);
90+
leftEyeActor.GetProperty().SetColor(1, 1, 1);
91+
leftEyeActor.GetProperty().SetDiffuse(0.95);
92+
leftEyeActor.GetProperty().SetSpecular(0.1);
93+
ren.AddActor(leftEyeActor);
94+
95+
vtkActor leftRetinaActor = createActor(PREFIX + "brainweb1_left_eye_lens.vtk", 127, 0.10, 100);
96+
leftRetinaActor.GetProperty().SetColor(0.1, 0.1, 0.1);
97+
leftRetinaActor.GetProperty().SetSpecular(1);
98+
leftRetinaActor.GetProperty().SetSpecularPower(1);
99+
ren.AddActor(leftRetinaActor);
100+
101+
// Place renWin in the center of this panel
102+
setLayout(new BorderLayout());
103+
add(renWin, BorderLayout.CENTER);
104+
}
105+
106+
/**
107+
* Load region data from a file and create its rendering pipeline.
108+
*/
109+
private vtkActor createActor(String fileName,
110+
int threshold,
111+
double targetReduction,
112+
int smoothingIterations) {
113+
vtkStructuredPointsReader reader = new vtkStructuredPointsReader();
114+
reader.SetFileName(fileName);
115+
reader.Update();
116+
117+
vtkMarchingCubes surfaceExtractor = new vtkMarchingCubes();
118+
surfaceExtractor.SetInput(reader.GetOutput());
119+
surfaceExtractor.SetValue(0, threshold);
120+
surfaceExtractor.ComputeNormalsOn();
121+
122+
123+
vtkDecimatePro deci = new vtkDecimatePro();
124+
deci.SetInput(surfaceExtractor.GetOutput());
125+
deci.SetTargetReduction(targetReduction);
126+
deci.PreserveTopologyOn();
127+
128+
vtkSmoothPolyDataFilter smoother = new vtkSmoothPolyDataFilter();
129+
smoother.SetInput(deci.GetOutput());
130+
smoother.SetNumberOfIterations(smoothingIterations);
131+
132+
vtkPolyDataNormals normals = new vtkPolyDataNormals();
133+
normals.SetInput(smoother.GetOutput());
134+
normals.FlipNormalsOn();
135+
136+
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
137+
mapper.SetInput(normals.GetOutput());
138+
mapper.ScalarVisibilityOff();
139+
140+
vtkActor actor = new vtkActor();
141+
actor.SetMapper(mapper);
142+
143+
return actor;
144+
}
145+
146+
/**
147+
*
148+
*/
149+
public static void main(String[] args) {
150+
SmoothRender panel = new SmoothRender();
151+
152+
JFrame frame = new JFrame("SmoothRender");
153+
frame.addWindowListener(new WindowAdapter() {
154+
public void windowClosing(WindowEvent e) {
155+
System.exit(0);
156+
}
157+
});
158+
frame.getContentPane().add("Center", panel);
159+
frame.pack();
160+
frame.setVisible(true);
161+
}
162+
}
163+
```
164+
165+

docs/ijp-toolkit/ijp-toolkit.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
layout: default
3+
title: IJ-Plugins Toolkit
4+
nav_order: 3
5+
has_children: true
6+
permalink: /docs/ijp-toolkit
7+
---
8+
9+
IJ-Plugins Toolkit is a set of plugins for ImageJ. The plugins are grouped into:
10+
11+
* 3D IO - import and export of data in 3D formats.
12+
* 3D Toolkit - operations on stacks interpreted as 3D images, including morphological operations.
13+
* Color - color space conversion, color edge detection (color and multi-band images).
14+
* Filters - fast median filters, coherence enhancing diffusion, and various anisotropic diffusion filters.
15+
* Graphics - Texture Synthesis - A plugin to perform texture synthesis using the image quilting algorithm of Efros and Freeman.
16+
* Segmentation - image segmentation through clustering, thresholding, and region growing.

index.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
layout: home
66
---
77

8-
## News
8+
Site under construction. May change or go down frequently.
9+
{: .label .label-yellow }
10+
11+
## Updates
912
* Mar 1, 2019 - the IJ-Plugins website started its transition from the [old location](https://ij-plugins.sourceforge.net/) to here
1013

1114
## ImageJ Plugin Bundles and Libraries
12-
* **[ij-Plugins Toolkit](https://github.com/ij-plugins)** - Set of ImageJ plugins and library for: reading and writing of 3D images, morphological operations on 3D images, color space conversion, color edge detection, various anisotropic diffusion filters, fast median filters, image quilting, image segmentation through clustering and region growing, and more.
15+
* **[ijp-toolkit](https://github.com/ij-plugins/ijp-toolkit)** - Set of ImageJ plugins and library for: reading and writing of 3D images, morphological operations on 3D images, color space conversion, color edge detection, various anisotropic diffusion filters, fast median filters, image quilting, image segmentation through clustering and region growing, and more.
1316
* **[ijp-color](https://github.com/ij-plugins/ijp-color)** - Operations on color spaces and color images, color conversion, and color calibration.
1417
* **[ijp-DeBayer2SX](https://github.com/ij-plugins/ijp-DeBayer2SX)** - Bayer-pattern image to color image converters.
1518
* **[ijp-scala-console](https://github.com/ij-plugins/ijp-scala-console)** - edit and run Scala scripts from ImageJ, have full access to ImageJ API and API's of all installed plugins.

0 commit comments

Comments
 (0)