<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kerry D. Wong &#187; Algorithm</title>
	<atom:link href="http://www.kerrywong.com/tag/algorithm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kerrywong.com</link>
	<description></description>
	<lastBuildDate>Fri, 10 Feb 2012 02:01:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Image Blur Detection via Hough Transform &#8212; IV</title>
		<link>http://www.kerrywong.com/2009/07/03/image-blur-detection-via-hough-transform-iv/</link>
		<comments>http://www.kerrywong.com/2009/07/03/image-blur-detection-via-hough-transform-iv/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 01:06:30 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Blur Detection]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[Hough Transform]]></category>
		<category><![CDATA[Intel IPP]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=1277</guid>
		<description><![CDATA[In my previous three articles (1,2,3) I discussed how to use Canny edge detection and Hough transform to identify blur images. Here I will show some results from the algorithm discussed before. Results When presented with images that are clear, the algorithm correctly identified most of them (see images below): The following images illustrate how [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/07/03/image-blur-detection-via-hough-transform-iv/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Image Blur Detection via Hough Transform &#8212; III</title>
		<link>http://www.kerrywong.com/2009/06/27/image-blur-detection-via-hough-transform-iii/</link>
		<comments>http://www.kerrywong.com/2009/06/27/image-blur-detection-via-hough-transform-iii/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 01:31:01 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Blur Detection]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[Hough Transform]]></category>
		<category><![CDATA[Intel IPP]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=1231</guid>
		<description><![CDATA[I will continue where I left off in my previous post. After performing Hough transform, and extracted the longest sections of lines for each corresponding Hough line detected, we will need to calculate the gradients of the image pixels luminance around the line sections. Gradient Calculation If you remember how the Hough parameters were determined [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/06/27/image-blur-detection-via-hough-transform-iii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Image Blur Detection via Hough Transform &#8212; II</title>
		<link>http://www.kerrywong.com/2009/06/24/image-blur-detection-via-hough-transform-ii/</link>
		<comments>http://www.kerrywong.com/2009/06/24/image-blur-detection-via-hough-transform-ii/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 01:44:44 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Blur Detection]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[Hough Transform]]></category>
		<category><![CDATA[Intel IPP]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=1194</guid>
		<description><![CDATA[In my previous post, I briefly discussed the rationale behind automated blur detection in digital imagery and did an overview of an algorithm that could be used to detect blur images. Here I will show some implementation details along with some C++ code snippets. Experience tells us that blur images tend to contain less details [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/06/24/image-blur-detection-via-hough-transform-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Image Blur Detection via Hough Transform &#8212; I</title>
		<link>http://www.kerrywong.com/2009/06/19/image-blur-detection-via-hough-transform-i/</link>
		<comments>http://www.kerrywong.com/2009/06/19/image-blur-detection-via-hough-transform-i/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 02:41:13 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Blur Detection]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[Hough Transform]]></category>
		<category><![CDATA[Intel IPP]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=1172</guid>
		<description><![CDATA[It is often necessary to identify and classify images based on their clarities. For instance, it is desirable for an automated process to locate blurred images within a large digitized image library and then automatically sharpen the blurred images via inverse filtering or blind deconvolution. In the following series of articles, I will discuss a [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/06/19/image-blur-detection-via-hough-transform-i/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Canny Edge Detection Auto Thresholding</title>
		<link>http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/</link>
		<comments>http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/#comments</comments>
		<pubDate>Fri, 08 May 2009 02:15:41 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux/BSD]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Image Processing]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=999</guid>
		<description><![CDATA[In the example I gave in &#8220;Interfacing IPP with Magick++&#8220;, I illustrated how to use Intel’s Integrated Performance Primitives (IPP) to perform edge detection. One issue with Canny edge detection algorithm is that we need to specify a high threshold and a low threshold. How to select those threshold values affect the quality of the [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Interfacing IPP with Magick++</title>
		<link>http://www.kerrywong.com/2009/03/17/interfacing-ipp-with-magick/</link>
		<comments>http://www.kerrywong.com/2009/03/17/interfacing-ipp-with-magick/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 01:01:24 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Image Processing]]></category>
		<category><![CDATA[IPP]]></category>
		<category><![CDATA[Multi-threading]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=864</guid>
		<description><![CDATA[Intel&#8217;s Integrated Performance Primitives (IPP) is a low level C++ library. It provides routines that are highly optimized on Intel processors. I recently started using it because its vast speed advantage in signal and image processing applications. Since the implementation of many of the functions are threaded, it makes the task of writing high performance [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/03/17/interfacing-ipp-with-magick/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Matrix Multiplication Performance in C++</title>
		<link>http://www.kerrywong.com/2009/03/07/matrix-multiplication-performance-in-c/</link>
		<comments>http://www.kerrywong.com/2009/03/07/matrix-multiplication-performance-in-c/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 04:16:14 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux/BSD]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[BLAS]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[matrix multiplication]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=586</guid>
		<description><![CDATA[A few days ago, I ran across this article by Dmitri Nesteruk. In his article, he compared the performance between C# and C++ in matrix multiplication. From the data he provided, matrix multiplication using C# is two to three times slower than using C++ in comparable situations. Even though a lot of optimizations have been [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2009/03/07/matrix-multiplication-performance-in-c/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Two Level Tree and Its Applications — II</title>
		<link>http://www.kerrywong.com/2008/12/22/two-level-tree-and-its-applications-%e2%80%94-ii/</link>
		<comments>http://www.kerrywong.com/2008/12/22/two-level-tree-and-its-applications-%e2%80%94-ii/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 00:37:27 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=480</guid>
		<description><![CDATA[In my previous post, I discussed how to merge and split a two level tree. Before moving on to discuss its applications, let us take a look at the output of the sample program I gave before.&#160; &#160;&#160;&#160; &#160;&#160;&#160; static void Main(string[] args) &#160;&#160;&#160; &#160;&#160;&#160; { &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; TreeNode n1 = new TreeNode(&#34;t1&#34;); &#160;&#160;&#160; [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2008/12/22/two-level-tree-and-its-applications-%e2%80%94-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two Level Tree and Its Applications &#8212; I</title>
		<link>http://www.kerrywong.com/2008/12/21/two-level-tree-and-its-applications-i/</link>
		<comments>http://www.kerrywong.com/2008/12/21/two-level-tree-and-its-applications-i/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 02:19:59 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/?p=474</guid>
		<description><![CDATA[A two level tree is a simple tree data structure. Unlike in a typical tree where the tree depths could be arbitrary, a two level tree has only two levels as its name suggests. Two level tree is also equivalent to a star.The following graph illustrates what a two level tree looks like: A two [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2008/12/21/two-level-tree-and-its-applications-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Producer-Consumer: A Duplicate File Finder</title>
		<link>http://www.kerrywong.com/2008/09/05/producer-consumer-a-duplicate-file-finder/</link>
		<comments>http://www.kerrywong.com/2008/09/05/producer-consumer-a-duplicate-file-finder/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 01:08:16 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/2008/09/05/producer-consumer-a-duplicate-file-finder/</guid>
		<description><![CDATA[Processes tend to benefit greatly from multi-core processors if they are CPU bound (i.e. computational intensive tasks). The actual speedup depends on the portion of the code that must remain sequential. The multi-core benefit diminishes for IO bound processes however since hard drive performance becomes the limiting factor. Unlike solid state drives (SSD), traditional hard [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2008/09/05/producer-consumer-a-duplicate-file-finder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Same Method, Different Speed</title>
		<link>http://www.kerrywong.com/2007/12/31/same-method-different-speed/</link>
		<comments>http://www.kerrywong.com/2007/12/31/same-method-different-speed/#comments</comments>
		<pubDate>Tue, 01 Jan 2008 03:06:59 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>

		<guid isPermaLink="false">http://www.kerrywong.com/2007/12/31/same-method-different-speed/</guid>
		<description><![CDATA[I came across something rather interesting the other day when trying to determine what sorting algorithms .Net Framework uses in its list class: The built-in&#160; sorting method runs much faster than the reverse-engineered and then compiled code, even though in theory the code being executed is identical.Using Lutz Roeder&#8217;s .Net Reflector, I was able to [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2007/12/31/same-method-different-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating Unique Permutations Programmatically</title>
		<link>http://www.kerrywong.com/2006/04/14/generating-unique-permutations-programmatically/</link>
		<comments>http://www.kerrywong.com/2006/04/14/generating-unique-permutations-programmatically/#comments</comments>
		<pubDate>Fri, 14 Apr 2006 15:23:15 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>
		<category><![CDATA[Unique Permutation]]></category>

		<guid isPermaLink="false">http://dimension/2006/04/14/generating-unique-permutations-programmatically/</guid>
		<description><![CDATA[Download UniquePermutation.zip The numbers of permutations on a set of n elements is n! (see definition). or example permutations of the word &#8220;ask&#8221; are: ask, aks, sak, ska, kas, ksa We often need to obtain unique permutations over a given set programmatically. Take the word &#8220;good&#8221; for example, the unique permutations are: good, godo, gdoo, [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2006/04/14/generating-unique-permutations-programmatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing a Trie in C#</title>
		<link>http://www.kerrywong.com/2006/04/01/implementing-a-trie-in-c/</link>
		<comments>http://www.kerrywong.com/2006/04/01/implementing-a-trie-in-c/#comments</comments>
		<pubDate>Sat, 01 Apr 2006 10:13:58 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>

		<guid isPermaLink="false">http://dimension/2006/04/01/implementing-a-trie-in-c/</guid>
		<description><![CDATA[Download Trie.zip Trie is a tree like data structure that can be used for fast text search. While there are a lot of examples on the internet, very few if any are written in C#. In this post, I would like to show a complete implementation in C#. In my implementation, the Trie nodes are [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2006/04/01/implementing-a-trie-in-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Three Ways to Reverse a String in C# &#8211; Update</title>
		<link>http://www.kerrywong.com/2006/03/11/three-ways-to-reverse-a-string-in-c-update/</link>
		<comments>http://www.kerrywong.com/2006/03/11/three-ways-to-reverse-a-string-in-c-update/#comments</comments>
		<pubDate>Sat, 11 Mar 2006 10:11:32 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>

		<guid isPermaLink="false">http://dimension/2007/03/11/three-ways-to-reverse-a-string-in-c-update/</guid>
		<description><![CDATA[In my post a week ago, I mentioned three ways to reverse a string. OK, I really meant three alternative ways to reverse a string. And the post was done from an algorithmic stand point of view. I guess in the real world, you can achieve this in just three lines of code: public string [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2006/03/11/three-ways-to-reverse-a-string-in-c-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three Ways to Reverse a String in C#</title>
		<link>http://www.kerrywong.com/2006/03/04/three-ways-to-reverse-a-string-in-c/</link>
		<comments>http://www.kerrywong.com/2006/03/04/three-ways-to-reverse-a-string-in-c/#comments</comments>
		<pubDate>Sat, 04 Mar 2006 15:09:02 +0000</pubDate>
		<dc:creator>kwong</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C Sharp (C#)]]></category>

		<guid isPermaLink="false">http://dimension/2006/03/04/three-ways-to-reverse-a-string-in-c/</guid>
		<description><![CDATA[OK, conceptually, it&#8217;s quite easy. A couple of my friends got asked this question when interviewing. Here are what my solutions are: 1. The trivial way This is the probably the most trivial version: public string Reverse1(string s) {    char[] c = s.ToCharArray();    string ts = string.Empty;    for (int i = c.Length - 1; i [...]]]></description>
		<wfw:commentRss>http://www.kerrywong.com/2006/03/04/three-ways-to-reverse-a-string-in-c/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

