<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kittipong Tapyou</title><link>https://inteoty.github.io/image-processing/</link><description>Recent content on Kittipong Tapyou</description><generator>Hugo -- 0.147.2</generator><language>en</language><lastBuildDate>Sun, 02 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://inteoty.github.io/image-processing/index.xml" rel="self" type="application/rss+xml"/><item><title>Variable Thresholding</title><link>https://inteoty.github.io/image-processing/variable-thresholding/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/variable-thresholding/</guid><description>&lt;h3 id="variable-thresholding">Variable Thresholding&lt;/h3>
&lt;p>This lab implements &lt;strong>adaptive thresholding&lt;/strong> to handle uneven illumination in grayscale images.
Instead of one global threshold, the image is divided into smaller partitions, and each part gets its own &lt;strong>local Otsu threshold&lt;/strong>.
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/variable-thresholding/image-1.png">
&lt;strong>Result:&lt;/strong>
Local thresholds adapt to illumination, correctly separating dark circular objects from the background much better than global thresholding.&lt;/p></description></item><item><title>Image Restoration</title><link>https://inteoty.github.io/image-processing/blurring-restoration/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/blurring-restoration/</guid><description>&lt;h3 id="blurring-function-and-restoration">Blurring Function and Restoration&lt;/h3>
&lt;p>Simulates &lt;strong>linear motion blur&lt;/strong> and performs &lt;strong>restoration&lt;/strong> in the frequency domain.
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/blurring-restoration/eq.png">&lt;/p>
&lt;ul>
&lt;li>Simulates sequential horizontal and vertical motion blurs (T₁, T₂).&lt;/li>
&lt;li>Restores blurred images by dividing Fourier-transformed images with known H(u, v).
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/blurring-restoration/image-1.png">&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Observation:&lt;/strong>&lt;br>
Effective restoration achieved when motion parameters (a, b, T) are known and noise is negligible.&lt;/p></description></item><item><title>Morphological Operation</title><link>https://inteoty.github.io/image-processing/morphological-operation/</link><pubDate>Tue, 21 Oct 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/morphological-operation/</guid><description>&lt;h3 id="morphological-operations">Morphological Operations&lt;/h3>
&lt;p>Implements &lt;strong>connected-component labeling&lt;/strong> using &lt;strong>geodesic dilation&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>Invert the binary image to make objects white.&lt;/li>
&lt;li>Select an unlabeled white pixel as a seed.&lt;/li>
&lt;li>Perform geodesic dilation constrained by the original mask.&lt;/li>
&lt;li>Label each connected region iteratively.
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/morphological-operation/image.png">&lt;/li>
&lt;/ol>
&lt;hr></description></item><item><title>Hough Transform</title><link>https://inteoty.github.io/image-processing/hough-transform/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/hough-transform/</guid><description>&lt;h3 id="hough-transform">Hough Transform&lt;/h3>
&lt;p>Manual implementation for:&lt;/p>
&lt;hr>
&lt;ul>
&lt;li>&lt;strong>Line detection:&lt;/strong> Based on Sobel edge maps, ρ–θ parameterization, and local maxima in Hough space.&lt;br>
&lt;img alt="Hough Space" loading="lazy" src="https://inteoty.github.io/image-processing/hough-transform/hough-space-line.png">
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/hough-transform/hough-line.png">&lt;/li>
&lt;/ul>
&lt;hr>
&lt;ul>
&lt;li>&lt;strong>Circle detection:&lt;/strong> Uses tangent direction estimation to compute (a, b, r).
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/hough-transform/hough-space-circle1.png">
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/hough-transform/hough-space-circle2.png">&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Result:&lt;/strong>&lt;br>
Successfully detects multiple lines and circles in complex images such as clocks and coins by iterative voting and duplicate suppression.&lt;/p></description></item><item><title>Spatial Filtering</title><link>https://inteoty.github.io/image-processing/spatial-filtering/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/spatial-filtering/</guid><description>&lt;h3 id="spatial-filtering">Spatial Filtering&lt;/h3>
&lt;p>Implements:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Low-pass filters:&lt;/strong> Mean and Gaussian&lt;br>
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/spatial-filtering/low-pass.png">&lt;/li>
&lt;li>&lt;strong>High-pass filters:&lt;/strong> Laplacian and Laplacian of Gaussian (LoG)&lt;br>
Includes a custom convolution with edge-padding (&lt;code>ConvPadded&lt;/code>).
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/spatial-filtering/high-pass.png">&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>Observation:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Mean filter increases blur with kernel size.&lt;/li>
&lt;li>Gaussian filter maintains more structure.&lt;/li>
&lt;li>LoG detects sharper edges compared to Laplacian alone.&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>Histogram Equalization</title><link>https://inteoty.github.io/image-processing/equalization/</link><pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/equalization/</guid><description>&lt;h3 id="histogram-equalization">Histogram Equalization&lt;/h3>
&lt;p>Steps:&lt;/p>
&lt;ol>
&lt;li>Compute histogram and cumulative distribution function (CDF).&lt;/li>
&lt;li>Normalize CDF and map it to new intensity values (&lt;code>HistEqualize&lt;/code> function).&lt;/li>
&lt;li>Compare manual results with Mathematica’s &lt;code>HistogramTransform&lt;/code>.
&lt;img alt="alt text" loading="lazy" src="https://inteoty.github.io/image-processing/equalization/hist-eql.png">&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;strong>Result:&lt;/strong>&lt;br>
Custom implementation produces contrast enhancement nearly identical to the built-in method, with well-distributed intensity levels.&lt;/p></description></item><item><title>Thresholding</title><link>https://inteoty.github.io/image-processing/thresholding/</link><pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate><guid>https://inteoty.github.io/image-processing/thresholding/</guid><description>Maximum Normal Line and Average Intensities Method</description></item></channel></rss>