==================== To Do: - Global: - Document: 1. SLImageDoc: new and save as other format.(no other format yet :P) 2. BMP File: RLE compression and other compression - View: 1. each channel view. 2. each pixel view (color, value, palette) 3. properties view, may be use CIndirectDialog 4. Zoom: limit problem. more detail in version 0.0.6. - Processing: 1. Do matching as thread cannot stop yet. 2. Histogram 3. Real-Time processing. - Printing: 1. Page Setup: region, position (center or left-top) 2. Test Print out. - Input: 1. May has slide bar for adjust value 2. May has preview result for selected value - Help: 1. User's Guide: 2. Programmer's Guide: - Design: write processing thread, tooltip, printing - Libraries: MFC, OpenCV, FFTW, GALib ==================== Release Plan: - Version 0.1.0, may be released when finish the Programmer's Guide. ==================== Bug Found: ==================== Doing: - Document 1. Register document type to OS: The document type that can be open an empty file can be registered. - Help: 1. User's Guide: English/Thai ==================== History: Version 0.0.15 (20040130) - Document: 1. Do not allow user close document when processing. May change to ask user for stop processing. - View: 1. FDView: user can try to flip inverse shape. Version 0.0.14 (20040113) - Processing: 1. Template: Matching using GA. - Save statistics to file: The GALib support STL that use iostream for writing a file. The FAQ of GALib say that we should compile by defining NO_STREAM in the gaconfig.h for using with MFC. But, we require to output the statistics to a file. 3 days, for find out the way to intercept that data. Then, I found that, it has no problem with the VC++ 6.0 by defining USE_OLD_STREAMS. - Load/Show statistics. - Do matching as thread. Has a problem when user close window. 2. Input: boolean field using check box. Version 0.0.13 (20040110) - Processing: 1.Filter: Smoothing 2.Template: Matching using GA - The GALib has a problem in GARelaGenome that will be dupplicated when include GARealGenome.h because the template instantiation will automatically do. Using the Microsoft Specific feature (extern) for prevent automatic instantiate in the header file GARealGenome.h and GARealGenome.C was modified. - The CFDGenome was derived from GARealGenome for handle the gene, scaling, rotation and phaseshifting. - To add each matched shape, there is a problem in memory store of contours. The contours is a tree of contour that each node may has its memory store or share. For freely add/remove each contour, the memory store should not be share. - Can process Simple,SteadyState,Incremental and Deme. Version 0.0.12 (20031231) - Processing: 1.Template: read, write, add, remove, match. - Document: 1.FDTemplate: as a FD database for using in object finding. - Read/Write from/to file (binary). - Add descriptor to template. - Remove descriptor from template. - Matching by simple loop. (slow) 2.FDDoc: - Add descriptor to template. - Read/Write change from text to binary data. - View: 1. FDTemplateView: show each FD in template. - Using horizontal scroll bar for scroll each FD. - Remove button. Version 0.0.11 (20031227) - Processing: 1.Elliptic Fourier Descriptor: - Using FFTW real number model - Normalize scale, rotate, phase, flip - Document: 1. FDDoc - Calculate normalize. Version 0.0.10 (20031217) - Processing: 1. Elliptic Fourier Descriptor: can forward, inverse and transform. - Document: 1.Shape Document (CShapeDoc) base document of contour, image and FD doc. - Read/Write from/to file, call from Read/Write of derived class. 2.FDDoc (CFDoc) - Read/Write from/to file. - Calculate forward, inverse, transform. - Create from menu Contour/Fourier Descriptor. - View: 1.CSLImageView (view for shape, contour and image) - Select/Deselect shape. - Clear all contours. 2.FDView (view for Fourier Descriptor) - Can show selected shape. - Can zoom in/out. - Can show fourier descriptor coefficient list. - Can input scale, rotate, phase for transform inverted shape. - Can select normalization. 3.Global: Options Dialog: 1.Output: Real and Integer number format. 2.Process: Angle type for input and output, degrees or redians. Version 0.0.9 (20031203) - Processing: 1.Inproved contour detection: can select output in the same image or create a new contour document. - Document: 1.Contour File: Read, Write - View: 1.Show document type on ID_INDICATOR_TYPE of status bar 2.Show mouse position on ID_INDICATOR_POSITION of status bar - Global: Options Dialog: 1.improve draw, can select style, width and color of normal pen and selected pen. Version 0.0.8 (20031129) - Processing: 1.Fixed Level Threshold 2.Adaptive Threshold - View: 1.Fourier Descriptor View: can show original shape - Document: 1.Fourier Descriptor Document: transfer shape from SLImageDoc. Version 0.0.7 (20031101) - View: 1.Can use mouse select a contour. 2.Can show contour. - Processing 1.Contour detection. - Global Options Dialog: 1.Draw contour number or not.(BOOL) 2.Draw line width.(int 1-20) 3.Elapse time include all of processing, initial value or not.(BOOL) Version 0.0.6 (20031029) - View: 1.Zoom in limit size < 3267, zoom out limit size > 50. It has some problem when zoom in, don't know what is the limit. Some image (small) can scale upto 15 times but size (1500) lower than large image. Large image scale upto 5-8 times but size around 3800. When it out of this the limit. All area does not draw. - Print: 1.Print preview draw at center of paper in full area with the same ratio. - Processing: 1.Sobel Edge Detection. Version 0.0.5 (20031027) - Veiw: 1.View 16,32bits and other color space image by using cvConvertImage(). - Input: 1.Help button can link to help context. - Processing: 1.Color Space Conversion can convert all of OpenCV support. 2.Canny Edge Detection. 3.Elapsed processing time. Version 0.0.4: (20031025) - Input: 1.Support tooltip message display when move mouse over editable area. 2.Selectable default button Ok, Cancel, Help. - Global: 1.Insert splash screen when starting program. 2.Insert tooltip to About Dialog. - Printing: 1.Print Preview was insert but has to do some scaling. - Document: 1.Image can undo and redo one step. Version 0.0.3 (20031024) - Processing: 1.Use the AfxBeginThread(Run,this) for running worker thread. The Run() method is a static method which use pointer pass from AxfBeginThread() to call a virtual method DoIt(). Derived document class can implement anything what to do. The simple way is to call any process by pointer of function. So, that pointer should be initialized before. Inside the method that call by this thread cannot access any GUI object such as CView by calling UpdateAllViews(NULL). So, the new UpdateAllViews() with no parameter was create for this reason and be used for menu View/Refresh too. - View: 1.Add the Refresh menu for refreshing and calling from worker thread. - Input: 1.Can input int by select choice in combobox. Version 0.0.2 (20031023) - Input: 1.Can input int and double field. Version 0.0.1 (20031020) - Document: 1.BMP File: load 1, 4, 8, 16 and 32 bits, BI_RGB(uncompress). - View: 1.Any 1 or 3 channels, 8bits depth image. Version 0.0.0 (20031004) - Re-design from SL image processing: 1.Try Intel IPP Library (Intel Integrated Performance Primitives v3.0) and try OpenCV (Intel Open Source Computer Vision Library vb3.1). The OpenCV can detect IPL (Intel Image Processing Library v2.0), an old version of IPP and use it as internal processing. It use IplImage data structure which is a supper set of IPP data structure. So, The development will be based on OpenCV and may use IPP library as plug-in.