Posts Tagged eDigitizer

A brand new version of eDigitizer with improved functions

Since the eDigitizer 2.0 released in a couple of year ago, new functions were requested and fulfilled. Some minor bugs were fixed. Now it is time to announce that a brand new version 2.10 is released. The new version brings the following new functions to the application.

  1. The linear distance of each segment is calculated and added together. This is the total distance between the first and last points. When you save the digitized data to file, you automatically get the points and the distances.
  2. Draw markers and line segments between adjacent points. That will help user to keep track of what is digitized and how good he does the job.

The following functions are either fixed or enhanced.

  1. The image can be restored by clicking the restore button. After the image is restored to its original, all line segments and point markers on the image will disappear.
  2. When you load a new image, all digitized information (data) will be cleaned. So make sure to save your digitized data before you do that.
  3. Save image function will save the image plus the point markers and line segments. So be careful that you do not overwrite the original image.
  4. During the digitizing period and after axes are digitized, you should not switch between two different size modes. if you do, the digitized data will be messed up.

The new version need .Net 2.0 and above framework to run. It can be used in Windows XP, Windows Vista, and Windows 7 etc.

To get the new release, just simply download the zip file and unpacked files into a folder; double click the eDigitizer application file; you can run the application right way.

Here is a snapshot for you to view.

Download the new release: eDigitizer210

Reference

Share

Tags: , , , , , ,

Customized cursor in window controls (C#)

I wanted to show a big cross as a cursor in an image control when I wrote eDigitizer in C#. The big cross can help users to accurately digitize graphs. I searched the intenert and found some useful information. Based on the useful piece of information, I developed a class that can handle customized cursor – big blue cross. I will not explain it in detail. You can copy and paste it and use it in your project.

using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace eDigitizer
{
	/// 
	/// Description of Cross.
	/// 
	public class Cross
	{
		Point crossPoint = new Point();
		Point currentPoint = new Point();
		Control myControl;

		public Cross()
		{
		}

		private void DrawCross2()
		{
			using (StreamWriter sw = new StreamWriter("trace.txt",true))
			{
				sw.WriteLine(crossPoint.ToString());
			}
			// draw a vertical line
			ControlPaint.DrawReversibleLine(myControl.PointToScreen(new Point(crossPoint.X,0)), myControl.PointToScreen(new Point(crossPoint.X, myControl.Height)), Color.Black);
			// draw a horizontal line
			ControlPaint.DrawReversibleLine(myControl.PointToScreen(new Point(0,crossPoint.Y)), myControl.PointToScreen(new Point(myControl.Width, crossPoint.Y)), Color.Black);
		}

		private void DrawCross(Point myPoint)
		{
	        // First DrawReversible to toggle to the background color
	        // Second DrawReversible to toggle to the specified color
		    if ((! crossPoint.IsEmpty) && (crossPoint != myPoint)) 
		    {
		    	DrawCross2();
		    }
			crossPoint = myPoint;
			DrawCross2();
		}
		
		public void Cross_OnMouseMove(Object sender, MouseEventArgs e) 
		{
			myControl = (Control)sender;
			currentPoint.X = e.X;
			currentPoint.Y = e.Y;
			DrawCross(currentPoint);
		}
		
		public void Cross_OnMouseUp(Object sender, MouseEventArgs e) 
		{
			DrawCross2();
		}
	}
}

The following private method demonstrates how to use the above class. It defines the size and shape of the customized cursor. You can call this method to attach the customized cursor to a window control during the window initiation.

private void CustomCursor(Control myControl)
{
	// create any bitmap
	int width = 518; //myControl.Width;
	int height = 518; //myControl.Height;
	Bitmap b    = new Bitmap(width,height);
	Graphics g  = Graphics.FromImage (b );
	// do whatever you wish
	Pen p = new Pen(Color.Blue, 1);
	g.DrawLine(p, new Point(0,height/2), new Point(width, height/2));
	g.DrawLine(p, new Point(width/2,0), new Point(width/2, height));
	// this is the trick!
	Cursor c = new Cursor(b.GetHicon());
	// attach cursor to the form
	myControl.Cursor = c;
	g.Dispose();
	p.Dispose();
	b.Dispose();
}

Download eDigitizer to see how it works.

Share

Tags: , ,

eDigitizer user guide

As a researcher, you may encounter the following situations from time to time. You need to get original data for a graph published in a scientific paper. The simple way is to use a ruler and estimate the value of each data point by eye. If you want to get the data more accurately, you have to turn to digitization software. Back to 2002, I wrote a MATLAB program that can do the job. Unfortunately, you have to own a copy of MATLAB to use the program. As inquiries increase recently, the eDigitizer is implemented in the .NET environment. There is no MATLAB required. Now the brand new implementation can run under Windows with .Net framework version 2 installed. In addition. The following lists it main features.

  1. Zoom and rotate images
  2. Test the orthogonality of axes
  3. Digitize axes
  4. Digitize data points
  5. Save digitized data to a text file

Get eDigitizer

Visit http://www.sunfinedata.com/graphing/edigitizer/ to download a copy of the application. This is a green software. You do not need to install it. Just expand the downloaded zip file to a folder and click the executable file – edigitizer-net2.exe. Since it need Microsoft .NET framework 2.0 runtime library, you have to install .Net framework 2.0 runtime redistribution package from the Microsoft web site.

Launch eDigitizer

First launch eDigitizer by double clicking it. You have to find the program in your hard disk by using Windows explorer or similar applications. Figure 1 shows the main window of the eDigitizer.

edigitizer-main
Figure 1

There are two functional area in eDigitizer’s main window. On the left side is a fixed area that houses all function commands. First functional block is related to image processing, such as load, zoom, rotate, restore and save image. The second functional block is related to digitizing X and Y axes and testing perpendicularity of them. The last functional block includes functions to digitize series. You can digitize as many series as you want. All data will be stored in text file. On the right side includes a zooming area with multiple tabs, image tab, graph tab and data tab. It takes the major portion of the main window. The size of this area changes with the eDigitizer window. If you move the mouse cursor to this area, the cursor changes to a big blue cross. That can help users to locate points on the screen. Before you load any image to the system, these tab areas have nothing. Next step is loading image.

Load image

Loading an image is pretty simple. Just click “Browse” button on the top of left panel and an “Open an image” dialog window will pop up (Figure 2). You can navigate to the folder where images are stored and select one to open.

edigitizer-browse
Figure 2

Once the selected image is loaded, the main window looks like Figure 3.

edigitizer-image
Figure 3

Digitize axes and test perpendicularity

Now you can directly click “Test” button in the Axes frame to test the orthogonality of the axes. Move the mouse cursor to the graph and it changes to the big blue cross. You have to sample three points (the origin, one point on X axis and one point on Y axis in sequence, Figure 4) in the coordinates.

edigitizer-axes
Figure 4

Click the origin, one point on X axis and one point on Y Axis sequentially, and then you will see the Theta (θ) and Alpha (α) values in the Axes frame of the left panel (refer to Figure 3). Figure 5 shows the definition of the two angles. If the alpha value is less than 1 degree and theta is around 90 degree. The orthogonality of the axes is good. You can directly digitize data points without rotation of the image. Otherwise, you have to rotate the image based on the alpha value you got in this step.

edigitizer-test
Figure 5

Next step is digitizing X and Y axes. Click X or Y button in Axes frame. The two textboxes below the buttons will change to “Name/Unit” and “Values”. What you need to do is enter the variable name and unit of X or Y axes in the first textbox and enter a comma separate values based on you actual situation into the second textbox. For the sample image we see in Figure 3, we have the following:

X axis: Name/Unit: Time (Hour); Values: -12, 0, 12, 24, 36, 48, 60, 72
Y axis: Name/Unit: mRNA; Values: 0, 0.5, 1.0

After you enter the pair for X axis, you should click “Collect” button to digitize the points in X axis. You have to digitize the points in the same order as you enter them in the Values textbox. The application will know when you finish the digitization based on the number of values you entered in the Values textbox. Once all points are digitized, there will be linear equation with R2 value shown up just above the “Collect” button. For this situation, the intercept of the linear equation is -21.55 and the slope is 0.24 with a R2 of 1.0 (See Figure 6)

edigitizer-axes
Figure 6

You can follow the same step to digitize the three points on Y axis.

Digitize series

Now we are ready to digitize our first series. Let’s pick “wt(col)” line to demonstrate the process.

  1. Enter “wt(col)” in the Name textbox in the Series frame
  2. Click “Collect” button
  3. Move cursor to image and it will change to a big blue cross
  4. Move the big blue cross to the center of the first open square on the left of the image and click it
  5. Move the big blue cross to the next open square and click it, repeat this step until you complete the last open square on the right side of the image
  6. Click “Commit” button in the Series frame. Note: before digitizing, this button is called “Collect”.
  7. Switch to “Graph” tab, you can see the digitized series like Figure 7
  8. Switch to “Data” tab, you can see the digitized data like Figure 8

edigitizer-graph
Figure 7

edigitizer-data
Figure 8

Congratulations! You have completed your first digitization. You can click “Save” button in the Series frame to save your results to a file for late use. Is it simple? Yes, it is pretty simple. You can digitize as many series of you want and save them into one text file.

Reference

Share

Tags: , , , , ,

eDigitizer – a Windows application to digitize graphs

Introduction
eDigitizer is a powerful tool that can help users to digitize the data points in graphs. It is extremely useful to scientists and engineers who are trying to use data from scientific literature in their study. Click here to see a screen shot. Main features of eDigitizer include the following:

  • Process multiple image formats
  • Stretch, zoom, center and rotate images
  • Test the orthogonality of axes
  • Digitize axes
  • Digitize data pointsof multiple series
  • Save digitized data to a text file

Requirements
Hardware:
IBM Compatible PC
Intel Pentium 4 and equivalent
Hard disk space: 1 MB
Software:
OS: Windows 2000/XP or later version
.NET: Microsoft .Net Framework version 2.0 redistribution package

Free Download
eDigitizer is a freeware. You can download, use, copy and distribute the fully functional application absolutely free. Download it from here.

April 5, 2010: The length of each segment digitized is calculated and recorded. The total length of a whole line also is summed from all segments. All these information will be output in the text file and the data tab. Download the new version of eDigitier here.

Reference

Share

Tags: , , ,