Thursday, December 3, 2009
Best Poster Award - DICTA 2009
The response to the work was overwhelming, and the end result was the Best Poster Award at the conference. Special thanks to my supervisor Imants Svalbe and Steve Morton for print and processing. I have added the poster to the FTL repository (so its logged). You can view it here.
A lot of interest was shown in the code of the work also, including from Canon Information Systems Research Australia (CISRA) personnel, hopefully it will increase its usage.
Cheers
Shakes - L3mming
Thursday, November 19, 2009
DGV 0.1 Stable Released
You can view some tutorials at the Google Code page.
What's DGV for? In my honours, I just wanted an easy, no fuss way to visualise my data (which was a 2D complex scalar field). To my dismay, I couldn't find one and ended up using Excel (I know.... really bad). So I wrote DGV as tool that allowed this. Most times I just wanted a tool view my data quickly. This is DGV's main goal. It has also been supplemented by my current Ph.D project on Image processing.
It has so far clocked over 2000 downloads and has far exceeded all my expectations. As such, it will be supported indefinitely into the future. I will also be adding my FTL Library to it soon, which should propel the software into the forefront of state-of-the-art Convolutions. The next major release will be after I submit my Ph.D Thesis (hopefully around March next year).
Note for Linux uses, the Linux build was built using the latest Ubuntu OS - Koala, so it requires the latest C++ standard libraries. In other words, it should run in any of the latest distros. This may be changed if it is found to be a major problem.
Cheers
Shakes - L3mming
Sunday, August 23, 2009
Discrete Geometry 3D Viewer
In DGV, the image is placed into a 3D scene using OpenGL (via the VTK library), so it uses your graphics card to render the image. U can pan and zoom, adjust the gamma and rotate it. U can save what you're viewing or just export the data/image. U can also view the raw data in table form (may not be as useful to non-scientific users). From the table u can do surface and line plots. U can also add, subtract etc. images using the Operate feature. Finally, one can see the histogram of the image, which tells u statistical info on the image (output into console also).
The main feature of DGV is Filtering and Convolutions via Fast Fourier Transforms. This allows one to see the frequencies present within the image and edit them via the table. One can do crude Low-pass (smoothing), High-pass (edge detection) or band-pass filtering. DGV also features surface and line animations.
Future advancements will include:
- Pixel values within viewer
- Saving animations
- Python Shell rather than simple console output. See my project called QPythonShell which allows one to embed a Python shell into Qt applications.
- More file formats
- More transforms, like the Number Theoretic Transforms (via my new Number Theoretic Transform C library).
Links:
Homepage, Sourceforge, Google Code and Qt Apps.org.
Cheers
Shakes - L3mming
Saturday, August 15, 2009
NTTW - The Number Theoretic Transform Library
NTTW is to be part of a larger library called Finite Transform Library (FTL). You can call it Faster Than Light too. :P This new library will feature other transforms I've been working on in my Ph.D, as well as incorporating FFTW. More news later as I complete papers and libraries.
Cheers
Shakes - L3mming
Thursday, August 6, 2009
XeLaTeX 1,2,3...
Firstly though..... why Xelatex?
- For arbitrary text and maths fonts in your document.
- Correct ligatures, kerning and other font features. This is only achieved in Latex using the microtype package, it is the default in Xelatex. See Beauty of Latex article.
- Easier to use arbitrary fonts.
- Unicode (UTF-8) encoding for special characters like international accents etc.
Windows: Xelatex can be found in Miktex 2.7 or above. Simply download and install Miktex Basic and install the xelatex package from the package manager. If any package is needed later on, Miktex will download and install it for you.
Linux: Install Texlive 2008 or above. Note that all versions of Ubuntu 9.04 and earlier have Texlive 2007. Download the Installer or the ISO file, burn the disc and run the install script ("install-tl"). See Texlive site for more detailed instructions. Go here to use Kile with Ubuntu after installing Texlive 2008.
Step 2: Using Xelatex
Using Xelatex is the same as using Latex. New to Latex? See this all you need guide. Create a new file and insert the following text into it.
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[a4paper]{article}
%XeLaTeX packages
\usepackage{xltxtra}
\usepackage{fontspec} %Font package
\usepackage{xunicode}
\title{Your Title}
\author{Your Name}
\date{\today}
\begin{document}
\maketitle
\section{Section Title}
Your text
\subsection{Subsection Title}
Your Text
\end{document}
Save the file with any name. Then using the command line type "xelatex [FileName]Step 3: Installing and Changing the Font
Changing the font is easy in Xelatex, just add the line "\setmainfont[Mapping=tex-text]{Fontname}" in your preamble (the space before the begin document line) with "Fontname" being the name of the Font. Any font installed on your system is applicable. See my post on Xelatex Thesis Choices for example of using Minion Pro fonts. For instance "Times New Roman" is comon on most systems. Use can see the fonts installed on your system using OpenOffice or any other font application.
Installing a font is easy too. Find and download a font you like (the hard part), see my font survey post to get some free and open ones, and extract if in archive.
Windows Vista: Right click on the TrueType (ttf) file(s) or OpenType (otf) file(s). Then select install. Thats it! To determine the name of the font, either look for it in OpenOffice, Wordpad or MS Office. Or double click to preview and the name is given in the preview.
Ubuntu Linux: Copy the TrueType (ttf) file(s) or OpenType (otf) file(s) to "/usr/share/fonts/opentype". If there is no opentype directory, create it.
That's it... you're good to go. Post any questions below.
Cheers
Shakes - L3mming
Saturday, August 1, 2009
Thesis Font: Baskerville
The font has a great history starting from its inception in 1757, which makes it perfect for the type of I'm going for - a Classic font. Wikipedia says:
Baskerville is a transitional serif typeface designed in 1757 by John Baskerville (1706-1775) in Birmingham, England. Baskerville is classified as a transitional typeface, positioned between the old style typefaces of William Caslon, and the modern styles of Giambattista Bodoni and Firmin Didot.
The Baskerville typeface is the result of John Baskerville's intent to improve upon the types of William Caslon. He increased the contrast between thick and thin strokes, making the serifs sharper and more tapered, and shifted the axis of rounded letters to a more vertical position. The curved strokes are more circular in shape, and the characters became more regular. These changes created a greater consistency in size and form.
Baskerville's typeface was the culmination of a larger series of experiments to improve legibility which also included paper making and ink manufacturing. The result was a typeface that reflected Baskerville's ideals of perfection, where he chose simplicity and quiet refinement. His background as a writing master is evident in the distinctive swash tail on the uppercase Q and in the cursive serifs in the Baskerville Italic. The refined feeling of the typeface makes it an excellent choice to convey dignity and tradition.
The open alternatives include Baskervald from ADF Fonts, GFS Baskerville from Greek Font Society (which is Greek only, still good from Physicists/Mathematicians though. Map it to the XeLaTeX Greek fonts), Open Baskerville (UFO Font only.... don't know how to get to Opentype yet) and Boisk Font which is inspired by Baskerville. I will add more as I find them.
Cheers
Shakes - L3mming
Wednesday, July 29, 2009
A Font Survey...
The first nice option is Minion/Myriad Pro combination (see previous post), but the fonts aren't open... just free for personal use. Another nice option is the Cambria/Cambria Math but there might be licensing issues since they require MS Windows on the Machine.
The free fonts with equivalent metrics to common fonts are another good option. There's a list of other free fonts also. Matching maths used to be a problem with XeLaTeX, though now the mathspec package makes this easy by allowing one to mix and match symbols and fonts together with simple commands (as shown in previous post for MnSymbol).
OpenOffice has some nice fonts install too... FreeSerif and Nimbus. Charis and Gentium are also good but don't have Small caps support. Fontin has won alot of praise but didn't blow me away. Asana Math doesnt have Italics.
I'm not satisfied by the current choices for math symbols either. Latin Modern (XeLaTeX default) math is nice, MnSymbol is ok and Cambria is very nice but not free.... sigh... the search continues.
Cheers
Shakes - L3mming
EDIT: Some more great links to font list.
- Beautiful High-Quality Free Fonts For Your Designs
- 15 Fresh High-Quality Free Fonts
- 15 Beautiful High-Quality Free Fonts
- 20+ Beautiful Free Serif Fonts
- 40+ Excellent Freefonts For Professional Design
Tuesday, July 28, 2009
XeLaTeX Thesis Choices....
Anyhoo... some interesting facts. Most LaTeX packages can be used with XeLaTeX. In fact I converted to it by changing my template to:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[a4paper,11pt,final,openright,twoside]{memoir}
\RequireXeTeX %Force XeTeX check
%XeLaTeX packages
\usepackage{xltxtra}
\usepackage{fontspec} %Font package
\usepackage{xunicode}
\defaultfontfeatures{Scale=MatchLowercase}
%Select fonts
\setmainfont[Mapping=tex-text]{Minion Pro}
\setsansfont[Mapping=tex-text]{Myriad Pro}
\setmonofont{Courier Std}
\title{Your Title}
\author{Your Name}
\date{}
\begin{document}
\maketitle
\chapter{Title}
\section{Section Title}
Your text
\subsection{Subsection Title}
Your Text
\end{document}
You can then replace Minion Pro, Myriad Pro and Courier Std fonts (which come with Acrobat Reader 9) to any font installed on your system. You will need to compile the document using XeLaTeX rather than LaTeX. Simply reconfigure the latex button of your favourite editor. For those interested in getting MnSymbol package (i.e. the Minion Pro Maths package) to work with XeLaTeX, replace the Select Font part with:Also replacing the XeLaTeX packages section to:\setprimaryfont{Minion Pro} \setmainfont[Mapping=tex-text]{Minion Pro} \setsansfont[Mapping=tex-text]{Myriad Pro} \setmonofont{Courier Std} \setmathsfont[Set=Greek,Uppercase=Italic,Lowercase=Italic]{
Minion Pro
}
\usepackage[MnSymbol]{mathspec}
\usepackage{xltxtra}
%\usepackage{fontspec}
\usepackage{xunicode}
\defaultfontfeatures{Scale=MatchLowercase}
You can control which font goes to which math font (rm, it etc.). See the mathspec package documentation for details. My experience of XeLaTeX has been quite enjoyable so far, hopefully it stays that way.Some very useful packages that I've found for my thesis so far has been:
- Memoir package.... a must really.
- Natbib... another must
- The rest in code form:
%Call other packages \usepackage{varioref} %extends \pageref via \vref to automate things like "on the next page" \usepackage[xetex,breaklinks,plainpages=false,pdfpagelabels]{hyperref} \usepackage{memhfixc} %Allows Hyperref in Memoir \usepackage{graphicx} \usepackage[draft]{pdfpages} \usepackage{mdwmath} %Math alignment \usepackage{mdwtab} \usepackage[printonlyused,withpage]{acronym} %acronyms package % Notation package \usepackage[intoc]{nomencl}% Notation equation ref [refeq] \makenomenclature %Temporary Packages \usepackage[draft]{fixme} %Fix me margin notes and list
- Others include ntheorem and svn-multi (if you intend on using Subversion for versioning)
Anyway, hope that helps anyone thinking of using XeLaTeX.
Cheers
Shakes - L3mming
EDIT: I have corrected the Minion Pro Math code.
EDIT: I have made the source for a basic but full thesis template is available on GitHub. Enjoy!
Monday, July 27, 2009
Windows float to integer compiler woes...
This was very distressing as what I found was that the truncation of floating pointing numbers to integers is rerouted to a compiler specific function called __ftol (thats float to long), which isn't fast enough.
I found some good links explaining this like Intel Notes on Floating Point-to-Integer Latency and Herf's Know your FPU page. These pages sum up the design flaw in the MSVC 2008 x64 compiler, as most work arounds can be done painlessly only on the x86 version of the compiler.
Apparently they've decided that this function is fast enough, and already marked the compiler flag '/QIfist', which stops it from being used in the x86 compiler, for deprecation!
"No compiler option is needed. The compiler has made significant improvements in float to int conversion speed."Sigh. I guess this is true for regular use, but my work requires tens to hundreds of milliseconds... and __ftol makes a significant difference. Incidentally, the compiler flag '/fp:fast' did help speed up the program but it is still 2-3 times slower than the GCC version.
I also tried the code
int ftol_ambient(double d) {
int i;
__asm {
fld d
fistp i
}
return i;
}
Turns out the x64 compiler doesn't support inline assembly.... grrr....Might have to implement the float casting using SSE (SIMD) intrinsics. Looks like I may have to switch compilers to stick or Linux.
Cheers
Shakes - L3mming
EDIT: The x64 compiler doesn't support inline assembly because it has been replaced with intrinsics. The way to achieve truncation is to use the following code:
static inline int round (double const x)
{
return _mm_cvtsd_si32(_mm_load_sd(&x));
}
A L3mming's blog...
I guess I should introduce myself a tad... I mainly work on Digital Processing in my Ph.D (or Ph.DuD as I like to call it) using C/C++. I enjoy the Number Theory in my work and the challenges in learning new stuff. I work in Windows and Linux, though I prefer Linux when not gaming.
I have written a scientific visualisation tool called DGV
My wife is expecting our first child in about a month and my 3 years limit (out of 3 1/2) for my Ph.D ends around the same time so It should be very interesting lol.
Well I hope to keep blogging regularly, perhaps fortnightly or as things come about.
Cheers
Shakes - A L3mming