<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.hshl.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Image_Processing%3A_Classification</id>
	<title>Image Processing: Classification - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hshl.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Image_Processing%3A_Classification"/>
	<link rel="alternate" type="text/html" href="https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;action=history"/>
	<updated>2026-05-06T07:04:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in HSHL Mechatronik</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=147082&amp;oldid=prev</id>
		<title>Ajay.paul@stud.hshl.de am 5. März 2026 um 13:23 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=147082&amp;oldid=prev"/>
		<updated>2026-03-05T13:23:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 5. März 2026, 13:23 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l159&quot;&gt;Zeile 159:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 159:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Scale Sensitivity:&amp;#039;&amp;#039;&amp;#039; Features like Area and MajorAxisLength depend on the image resolution. If the camera zooms in, the &amp;quot;Area&amp;quot; changes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Scale Sensitivity:&amp;#039;&amp;#039;&amp;#039; Features like Area and MajorAxisLength depend on the image resolution. If the camera zooms in, the &amp;quot;Area&amp;quot; changes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#* &amp;#039;&amp;#039;Fix:&amp;#039;&amp;#039; Use scale-invariant dimensionless features like &amp;#039;&amp;#039;&amp;#039;Eccentricity&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Circularity&amp;#039;&amp;#039;&amp;#039; (&amp;lt;math&amp;gt;4\pi A / P^2&amp;lt;/math&amp;gt;) if the camera distance varies.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#* &amp;#039;&amp;#039;Fix:&amp;#039;&amp;#039; Use scale-invariant dimensionless features like &amp;#039;&amp;#039;&amp;#039;Eccentricity&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Circularity&amp;#039;&amp;#039;&amp;#039; (&amp;lt;math&amp;gt;4\pi A / P^2&amp;lt;/math&amp;gt;) if the camera distance varies.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;SVN Repository:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://svn.hshl.de/svn/MATLAB_Vorkurs/trunk/Signalverarbeitung_mit_Kuenstlicher_Intelligenz/Image%20Processing%20with%20MATLAB%20and%20AI/image_processing_matlab/Classification/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ajay.paul@stud.hshl.de</name></author>
	</entry>
	<entry>
		<id>https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=146838&amp;oldid=prev</id>
		<title>Ajay.paul@stud.hshl.de: /* Detailed Code Logic */</title>
		<link rel="alternate" type="text/html" href="https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=146838&amp;oldid=prev"/>
		<updated>2026-02-05T08:46:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Detailed Code Logic&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 5. Februar 2026, 08:46 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l145&quot;&gt;Zeile 145:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 145:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Coins:&amp;#039;&amp;#039;&amp;#039; By inspecting the Area values, we see nickels have an area &amp;lt;math&amp;gt;\approx 2500&amp;lt;/math&amp;gt; pixels and dimes have an area &amp;lt;math&amp;gt;\approx 1800&amp;lt;/math&amp;gt; pixels. A threshold of &amp;#039;&amp;#039;&amp;#039;2000&amp;#039;&amp;#039;&amp;#039; cleanly separates the classes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Coins:&amp;#039;&amp;#039;&amp;#039; By inspecting the Area values, we see nickels have an area &amp;lt;math&amp;gt;\approx 2500&amp;lt;/math&amp;gt; pixels and dimes have an area &amp;lt;math&amp;gt;\approx 1800&amp;lt;/math&amp;gt; pixels. A threshold of &amp;#039;&amp;#039;&amp;#039;2000&amp;#039;&amp;#039;&amp;#039; cleanly separates the classes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Rice:&amp;#039;&amp;#039;&amp;#039; Orientation ranges from -90 to 90. The decision boundary is naturally &amp;#039;&amp;#039;&amp;#039;45 degrees&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Rice:&amp;#039;&amp;#039;&amp;#039; Orientation ranges from -90 to 90. The decision boundary is naturally &amp;#039;&amp;#039;&amp;#039;45 degrees&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Datei&lt;/del&gt;:Classification Size.png|mini]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Datei&lt;/del&gt;:Classification Orientation.png|mini]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{| class=&quot;wikitable&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/ins&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File&lt;/ins&gt;:Classification Size.png|mini]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/ins&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File&lt;/ins&gt;:Classification Orientation.png|mini]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Common Issues ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Common Issues ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ajay.paul@stud.hshl.de</name></author>
	</entry>
	<entry>
		<id>https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=146830&amp;oldid=prev</id>
		<title>Ajay.paul@stud.hshl.de: Die Seite wurde neu angelegt: „= Classification: Geometric Feature Extraction =  &#039;&#039;&#039;Image Classification&#039;&#039;&#039; in the context of classic image processing involves categorizing objects into classes based on measurable geometric properties (descriptors). Unlike Deep Learning, which learns features automatically, this method relies on &#039;&#039;&#039;Feature Engineering&#039;&#039;&#039;—mathematically defining properties like Area, Perimeter, or Orientation and using logical thresholds to sort objects.  This article…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.hshl.de/wiki/index.php?title=Image_Processing:_Classification&amp;diff=146830&amp;oldid=prev"/>
		<updated>2026-02-04T20:26:09Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Classification: Geometric Feature Extraction =  &amp;#039;&amp;#039;&amp;#039;Image Classification&amp;#039;&amp;#039;&amp;#039; in the context of classic image processing involves categorizing objects into classes based on measurable geometric properties (descriptors). Unlike Deep Learning, which learns features automatically, this method relies on &amp;#039;&amp;#039;&amp;#039;Feature Engineering&amp;#039;&amp;#039;&amp;#039;—mathematically defining properties like Area, Perimeter, or Orientation and using logical thresholds to sort objects.  This article…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Classification: Geometric Feature Extraction =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Image Classification&amp;#039;&amp;#039;&amp;#039; in the context of classic image processing involves categorizing objects into classes based on measurable geometric properties (descriptors). Unlike Deep Learning, which learns features automatically, this method relies on &amp;#039;&amp;#039;&amp;#039;Feature Engineering&amp;#039;&amp;#039;&amp;#039;—mathematically defining properties like Area, Perimeter, or Orientation and using logical thresholds to sort objects.&lt;br /&gt;
&lt;br /&gt;
This article demonstrates how to classify objects using the MATLAB function &amp;lt;code&amp;gt;regionprops&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Theoretical Background ==&lt;br /&gt;
&lt;br /&gt;
=== The Workflow ===&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Segmentation:&amp;#039;&amp;#039;&amp;#039; The image is converted to a binary mask where objects are white (1) and the background is black (0).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Connected Component Analysis (CCA):&amp;#039;&amp;#039;&amp;#039; The algorithm scans the binary mask to identify distinct, disconnected &amp;quot;blobs&amp;quot; or objects.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Feature Extraction:&amp;#039;&amp;#039;&amp;#039; For every identified object, specific mathematical properties are calculated.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Decision Rule:&amp;#039;&amp;#039;&amp;#039; A logical classifier (e.g., an If-Else statement or a Decision Tree) assigns a label to the object based on its feature values.&lt;br /&gt;
&lt;br /&gt;
=== Geometric Descriptors ===&lt;br /&gt;
The primary tool for this in MATLAB is &amp;lt;code&amp;gt;regionprops&amp;lt;/code&amp;gt;. Common descriptors include:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Area:&amp;#039;&amp;#039;&amp;#039; The scalar count of pixels in the region. (Useful for classifying by size).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Orientation:&amp;#039;&amp;#039;&amp;#039; The angle (in degrees ranging from -90 to 90) between the x-axis and the major axis of the ellipse that fits the region. (Useful for alignment detection).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Eccentricity:&amp;#039;&amp;#039;&amp;#039; A value between 0 and 1 indicating how elongated the shape is (0 is a circle, 1 is a line).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Solidity:&amp;#039;&amp;#039;&amp;#039; The proportion of the pixels in the convex hull that are also in the region.&lt;br /&gt;
&lt;br /&gt;
== MATLAB Implementation ==&lt;br /&gt;
&lt;br /&gt;
The following script performs two classification tasks:&lt;br /&gt;
# Classifying &amp;#039;&amp;#039;&amp;#039;Coins&amp;#039;&amp;#039;&amp;#039; by &amp;#039;&amp;#039;&amp;#039;Size&amp;#039;&amp;#039;&amp;#039; (Large vs. Small).&lt;br /&gt;
# Classifying &amp;#039;&amp;#039;&amp;#039;Rice Grains&amp;#039;&amp;#039;&amp;#039; by &amp;#039;&amp;#039;&amp;#039;Orientation&amp;#039;&amp;#039;&amp;#039; (Horizontal vs. Vertical).&lt;br /&gt;
&lt;br /&gt;
=== Code Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
%% Task 6: Geometric Classification&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
%% --- CASE 1: Classification by Size (Area) ---&lt;br /&gt;
&lt;br /&gt;
% 1. Load and Preprocess&lt;br /&gt;
I_coins = imread(&amp;#039;coins.png&amp;#039;);&lt;br /&gt;
% Otsu&amp;#039;s thresholding for binarization&lt;br /&gt;
level = graythresh(I_coins);&lt;br /&gt;
BW_coins = imbinarize(I_coins, level);&lt;br /&gt;
% Fill holes so the Area calculation represents the solid coin&lt;br /&gt;
BW_coins = imfill(BW_coins, &amp;#039;holes&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
% 2. Feature Extraction&lt;br /&gt;
% Measure Area, Centroid (for labeling), and BoundingBox (for drawing)&lt;br /&gt;
stats_coins = regionprops(BW_coins, &amp;#039;Area&amp;#039;, &amp;#039;Centroid&amp;#039;, &amp;#039;BoundingBox&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
% 3. Classification Logic and Visualization&lt;br /&gt;
figure(&amp;#039;Name&amp;#039;, &amp;#039;Task 6: Classification by Size&amp;#039;, ...&lt;br /&gt;
       &amp;#039;NumberTitle&amp;#039;, &amp;#039;off&amp;#039;, &amp;#039;Position&amp;#039;, [100, 500, 600, 500]);&lt;br /&gt;
imshow(I_coins); &lt;br /&gt;
title(&amp;#039;Classifying Coins: Red=Large, Green=Small&amp;#039;);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Threshold determined by observing the data&lt;br /&gt;
area_threshold = 2000; &lt;br /&gt;
&lt;br /&gt;
for k = 1:length(stats_coins)&lt;br /&gt;
    % Get features for the k-th object&lt;br /&gt;
    current_area = stats_coins(k).Area;&lt;br /&gt;
    bbox = stats_coins(k).BoundingBox;&lt;br /&gt;
    centroid = stats_coins(k).Centroid;&lt;br /&gt;
    &lt;br /&gt;
    % --- THE CLASSIFIER ---&lt;br /&gt;
    if current_area &amp;gt; area_threshold&lt;br /&gt;
        % Class 1: Large&lt;br /&gt;
        color = &amp;#039;r&amp;#039;;&lt;br /&gt;
        label = &amp;#039;L&amp;#039;;&lt;br /&gt;
    else&lt;br /&gt;
        % Class 2: Small&lt;br /&gt;
        color = &amp;#039;g&amp;#039;;&lt;br /&gt;
        label = &amp;#039;S&amp;#039;;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Draw bounding box&lt;br /&gt;
    rectangle(&amp;#039;Position&amp;#039;, bbox, &amp;#039;EdgeColor&amp;#039;, color, &amp;#039;LineWidth&amp;#039;, 2);&lt;br /&gt;
    % Place label&lt;br /&gt;
    text(centroid(1), centroid(2), label, &amp;#039;Color&amp;#039;, &amp;#039;k&amp;#039;, ...&lt;br /&gt;
         &amp;#039;FontSize&amp;#039;, 12, &amp;#039;FontWeight&amp;#039;, &amp;#039;bold&amp;#039;, &amp;#039;BackgroundColor&amp;#039;, &amp;#039;w&amp;#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%% --- CASE 2: Classification by Orientation ---&lt;br /&gt;
&lt;br /&gt;
% 1. Load and Preprocess (Rice requires background subtraction)&lt;br /&gt;
I_rice = imread(&amp;#039;rice.png&amp;#039;);&lt;br /&gt;
background = imopen(I_rice, strel(&amp;#039;disk&amp;#039;, 15));&lt;br /&gt;
I_rice_adj = I_rice - background;&lt;br /&gt;
BW_rice = imbinarize(I_rice_adj);&lt;br /&gt;
&lt;br /&gt;
% 2. Feature Extraction&lt;br /&gt;
% Measure Orientation and MajorAxisLength (to draw lines)&lt;br /&gt;
stats_rice = regionprops(BW_rice, &amp;#039;Orientation&amp;#039;, &amp;#039;Centroid&amp;#039;, &amp;#039;MajorAxisLength&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
% 3. Visualization&lt;br /&gt;
figure(&amp;#039;Name&amp;#039;, &amp;#039;Task 6: Classification by Orientation&amp;#039;, ...&lt;br /&gt;
       &amp;#039;NumberTitle&amp;#039;, &amp;#039;off&amp;#039;, &amp;#039;Position&amp;#039;, [750, 500, 600, 500]);&lt;br /&gt;
imshow(I_rice); &lt;br /&gt;
title(&amp;#039;Rice Orientation: Cyan=Horizontal, Magenta=Vertical&amp;#039;);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
for k = 1:length(stats_rice)&lt;br /&gt;
    angle = stats_rice(k).Orientation;&lt;br /&gt;
    centroid = stats_rice(k).Centroid;&lt;br /&gt;
    &lt;br /&gt;
    % --- THE CLASSIFIER ---&lt;br /&gt;
    % MATLAB orientation is between -90 and 90.&lt;br /&gt;
    % &amp;lt; 45 degrees is horizontal-ish. &amp;gt; 45 degrees is vertical-ish.&lt;br /&gt;
    if abs(angle) &amp;lt; 45&lt;br /&gt;
        color = &amp;#039;c&amp;#039;; % Cyan for Horizontal&lt;br /&gt;
    else&lt;br /&gt;
        color = &amp;#039;m&amp;#039;; % Magenta for Vertical&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Draw orientation lines (Geometric calculation)&lt;br /&gt;
    len = stats_rice(k).MajorAxisLength;&lt;br /&gt;
    theta = deg2rad(-angle);&lt;br /&gt;
    x1 = centroid(1) - (len/2) * cos(theta);&lt;br /&gt;
    y1 = centroid(2) - (len/2) * sin(theta);&lt;br /&gt;
    x2 = centroid(1) + (len/2) * cos(theta);&lt;br /&gt;
    y2 = centroid(2) + (len/2) * sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    plot([x1 x2], [y1 y2], &amp;#039;Color&amp;#039;, color, &amp;#039;LineWidth&amp;#039;, 2);&lt;br /&gt;
end&lt;br /&gt;
hold off;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detailed Code Logic ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Preprocessing ===&lt;br /&gt;
Before features can be extracted, the image must be binary.&lt;br /&gt;
* For the coins, simple &amp;#039;&amp;#039;&amp;#039;Otsu thresholding&amp;#039;&amp;#039;&amp;#039; (`graythresh`) works well because the background is uniform.&lt;br /&gt;
* For the rice, &amp;#039;&amp;#039;&amp;#039;Top-hat filtering&amp;#039;&amp;#039;&amp;#039; (Background subtraction using `imopen`) is used first because the lighting is uneven.&lt;br /&gt;
&lt;br /&gt;
=== 2. regionprops ===&lt;br /&gt;
This is the workhorse function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
stats = regionprops(BW, &amp;#039;Property1&amp;#039;, &amp;#039;Property2&amp;#039;, ...);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It returns a structure array where `stats(1)` refers to the first object found, `stats(2)` the second, and so on.&lt;br /&gt;
&lt;br /&gt;
=== 3. The Decision Boundary ===&lt;br /&gt;
In classical classification, the engineer must manually determine the cutoff point.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Coins:&amp;#039;&amp;#039;&amp;#039; By inspecting the Area values, we see nickels have an area &amp;lt;math&amp;gt;\approx 2500&amp;lt;/math&amp;gt; pixels and dimes have an area &amp;lt;math&amp;gt;\approx 1800&amp;lt;/math&amp;gt; pixels. A threshold of &amp;#039;&amp;#039;&amp;#039;2000&amp;#039;&amp;#039;&amp;#039; cleanly separates the classes.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Rice:&amp;#039;&amp;#039;&amp;#039; Orientation ranges from -90 to 90. The decision boundary is naturally &amp;#039;&amp;#039;&amp;#039;45 degrees&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
[[Datei:Classification Size.png|mini]]&lt;br /&gt;
[[Datei:Classification Orientation.png|mini]]&lt;br /&gt;
== Common Issues ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Under-Segmentation:&amp;#039;&amp;#039;&amp;#039; If two objects touch, `regionprops` sees them as one single object.&lt;br /&gt;
#* &amp;#039;&amp;#039;Impact:&amp;#039;&amp;#039; The Area will be double the expected size, causing a misclassification (e.g., two small coins classified as one large coin).&lt;br /&gt;
#* &amp;#039;&amp;#039;Fix:&amp;#039;&amp;#039; Use `imopen` with a disk structuring element or Watershed segmentation to break connections before feature extraction.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Scale Sensitivity:&amp;#039;&amp;#039;&amp;#039; Features like Area and MajorAxisLength depend on the image resolution. If the camera zooms in, the &amp;quot;Area&amp;quot; changes.&lt;br /&gt;
#* &amp;#039;&amp;#039;Fix:&amp;#039;&amp;#039; Use scale-invariant dimensionless features like &amp;#039;&amp;#039;&amp;#039;Eccentricity&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Circularity&amp;#039;&amp;#039;&amp;#039; (&amp;lt;math&amp;gt;4\pi A / P^2&amp;lt;/math&amp;gt;) if the camera distance varies.&lt;/div&gt;</summary>
		<author><name>Ajay.paul@stud.hshl.de</name></author>
	</entry>
</feed>