<?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>Anatomical Travelogue Research &#187; Image processing</title>
	<atom:link href="http://www.anatomicaltravel.com/research/category/image-processing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anatomicaltravel.com/research</link>
	<description>Bringing you case studies and free tools in 3D animation, video compositing, and image processing.</description>
	<lastBuildDate>Wed, 18 Jan 2012 23:37:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Color Reduction</title>
		<link>http://www.anatomicaltravel.com/research/2011/12/color-reduction/</link>
		<comments>http://www.anatomicaltravel.com/research/2011/12/color-reduction/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 16:39:37 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Image processing]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=2706</guid>
		<description><![CDATA[The main purpose of the Color Reduction tool is to maximize the contrast in the color channels of an image. This can improve the input for color segmentation tools as well as the results of color to grayscale conversions. We implemented two different algorithms in order to determine color space transformations that optimize the contrast: [...]]]></description>
			<content:encoded><![CDATA[<p>The main purpose of the Color Reduction tool is to maximize the contrast in the color channels of an image. This can improve the input for color segmentation tools as well as the results of color to grayscale conversions. We implemented two different algorithms in order to determine color space transformations that optimize the contrast: Principle Component Analysis (PCA) and Locality Preserving Projections (LPP).</p>
<p>Both methods can be applied to transform or reduce 2-4 input channels to 1-4 output channels, for a single image or a range of images. A secondary image input can be used to supply a weighting mask that determines the influence of each pixel during the color reduction algorithm. Afterwards, the output channels can be normalized and optionally, the color transformation can be encoded in a Fusion 3D LUT.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorReduction_RG_Tilepic_2_0006.png"><img class="size-full wp-image-2708  aligncenter" title="ColorReduction_RG_Tilepic_2_0006" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorReduction_RG_Tilepic_2_0006.png" alt="" width="160" height="120" /></a><br />
<a href="http://www.anatomicaltravel.com/research/downloads/ColorReduction.zip">Download Color Reduction 1.0</a><a href="http://www.anatomicaltravel.com/research/downloads/ColorReduction.zip"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Color Reduction" alt="Download Color Reduction" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p><span id="more-2706"></span></p>
<p><strong><br />
Description of methods</strong></p>
<p>The results of PCA and LPP are not necessarily the same since the optimization is based on different criteria. PCA determines the principle components that account for most of the contrast in color space, e.g. if the contrast in the red and green channels is much higher then the contrast in the blue channel, the first channel returned by PCA will be a linear combination of the red and green channel.</p>
<p>In addition, LPP considers the proximity of colors in the image space, e.g. if many yellow pixels are neighbors of green pixels in image space, green and yellow pixels may get the same color in the first channel of LPP. In constrast, red and yellow pixels may get different colors although their distance in the color space is the same (see details on the effect of the LPP weighting factor below).</p>
<p><br/><strong><br />
Comparison of PCA and LPP</strong></p>
<p>The following video shows the effect of PCA and LPP for color to grayscale conversion. The results are compared to simply using the lightness channel of the LAB color space. For better visibility, only the 2D histogram for the red and blue color channels is shown.</p>
<p>In the first step, the color space of the input image is projected onto a line. The orientation of the line and the direction of projection are different for all three methods and result in a different distribution of contrast. In the second step, the line is mapped to the grayscale range and normalized.<br/><br />
<br /><img src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorReduction.png" alt="media" /><br />
<br />
<br/>While PCA will always find the axis of highest contrast in the color space and is independent of any parameters, the results of LPP depend on a weighting factor.</p>
<p><br/><strong><br />
Effect of the LPP weighting factor</strong></p>
<p>The image below helps to understand the effect of the LPP weighting factor. Internally, the weighting factor is applied to the color space distances of neighboring pixels, so that a higher factor will lower the chance of pixels with different colors to be recognized as neighbors. The example shows the input image which contains dark green, light green, yellow and orange pixels and a simplified red-green histogram.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorReductionLPP.png"><br />
<img class="size-full wp-image-2744    aligncenter" title="ColorReductionLPP" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorReductionLPP.png" alt="" width="462" height="308" /></a></p>
<p style="text-align: left;">Although the color space distance in vertical direction is smaller than the distance in horizontal direction, LPP will recognize the neighborhood between light green and yellow pixels as well as the neighborhood between dark green and orange pixels in image space. Therefore, LPP with a low weighting factor will project light green and yellow to the same color as well as dark green and orange to another color. However, after increasing the weighting factor, the color space distances will become more important than the spatial neighborhoods again and the result will be the same as for PCA.</p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2011/12/color-reduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RGB to LAB</title>
		<link>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/</link>
		<comments>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:40:34 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=2686</guid>
		<description><![CDATA[

Ok, this Fuse started off as a really tiny one.  Fusion already has a CSConvert() that does Lab.  So all I have to do is&#8230;
if mode == 0 then
out:CSConvert("RGB", "LAB")
else
out:CSConvert("LAB", "RGB")
 end
Simple and fast.  But the results were a bit&#8230; unexpected.  So we added a little tweak which has no basis in known color [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/RGBtoLAB_Tilepic.png"><img class="aligncenter size-full wp-image-2689" title="RGBtoLAB_Tilepic" src="http://www.anatomicaltravel.com/research/wp-content/uploads/RGBtoLAB_Tilepic.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><strong><a href="http://www.anatomicaltravel.com/research/downloads/RGBtoLAB.fuse">Download RGBtoLAB 1.03</a><a href="http://www.anatomicaltravel.com/research/downloads/RGBtoLAB.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download RGBtoLAB" alt="Download RGBtoLAB" src="/research/images/download.gif" alt="" width="14" height="16" /></a></strong></p>
<p>Ok, this Fuse started off as a <em>really </em>tiny one.  Fusion already has a CSConvert() that does <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=KhfRynutmQM#!" target="_blank">L</a><a href="http://www.youtube.com/watch?v=jlec3u0ebyM&amp;feature=related" target="_blank">a</a><a href="http://www.youtube.com/watch?v=AG38FuDsT-A&amp;feature=BFa&amp;list=PLEBF94493B6A357F9&amp;lf=results_main" target="_blank">b</a>.  So all I have to do is&#8230;</p>
<blockquote><p><code>if mode == 0 then</code></p>
<p><code>out:CSConvert("RGB", "LAB")</code></p>
<p><code>else</code></p>
<p><code>out:CSConvert("LAB", "RGB")</code></p>
<p><code> </code><code>end</code></p></blockquote>
<p>Simple and fast.  But the results were a bit&#8230; unexpected.  So we added a little tweak which has no basis in known color science, it just makes is so that a linear RGB input returns what I <em>think</em> is a linear <em>L</em> output.</p>
<p>So why doesn&#8217;t <a href="http://vfxpedia.com/index.php?title=Eyeon:Manual/Fusion_6/Color_Space" target="_blank">ColorSpace</a> have an Lab button?  I don&#8217;t know.  You can see LAB color in action in the <a href="http://vfxpedia.com/index.php?title=Eyeon:Manual/Fusion_6/Wand" target="_blank">Wand </a>tool, though.</p>
<p>Other options include output a LUT Image only, as if it were a Source tool.  Same as the new option on <a href="http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/" title="Color Matrix Transform">ColorMatrixTransform</a>.  You can also choose whether to affect the canvas color or not.</p>
<p style="text-align: center;"><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Signed Distance</title>
		<link>http://www.anatomicaltravel.com/research/2011/05/signed-distance/</link>
		<comments>http://www.anatomicaltravel.com/research/2011/05/signed-distance/#comments</comments>
		<pubDate>Wed, 11 May 2011 15:23:59 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[3D filtering]]></category>
		<category><![CDATA[Fuse]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=2087</guid>
		<description><![CDATA[The signed distance operator can be quite useful when doing image/voxel data processing based on a pixel&#8217;s distance from an iso-surface. This plugin calculates just that. The plugin is implemented using Open CL, so the Open CL program should also be copied into the same directory as the Fuse plugin.



The tool has inputs to control [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">The<em> signed distance </em>operator can be quite useful when doing image/voxel data processing based on a pixel&#8217;s distance from an iso-surface. This plugin calculates just that. The plugin is implemented using Open CL, so the Open CL program should also be copied into the same directory as the Fuse plugin.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/SignedDistance_Tilepic.png"><img class="size-full wp-image-2101  aligncenter" title="SignedDistanceTilepic" src="http://www.anatomicaltravel.com/research/wp-content/uploads/SignedDistance_Tilepic.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/downloads/Signed-Distance.zip">Download Signed Distance Fuse </a><a href="http://www.anatomicaltravel.com/research/downloads/Signed-Distance.zip"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Signed Distance Fuse" alt="Download Signed Distance Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: center;">
<p>The tool has inputs to control the position of the iso-surface <em>(Zeropass Threshold</em>) and the number of rasterizing passes (<em>Number of Passes</em>). The output can be a distance value or a 2D &#8211; vector pointing towards the closest point in the iso-surface.</p>
<p style="text-align: center;"><br /><img src="http://www.anatomicaltravel.com/research/wp-content/uploads/SignedDistance_Chameleon_thumbnail.jpg" alt="media" /><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2011/05/signed-distance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bilateral Filter</title>
		<link>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 20:57:45 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Noise reduction]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1984</guid>
		<description><![CDATA[Smoothing an image without losing all the edges, that&#8217;s what the Bilateral Filter is made for. It basically performs a Gaussian blur not only in the image dimensions, but also on the color intensities. Therefore it will smooth homogeneous areas while at the same time respecting the image&#8217;s edges. The following example shows the effect [...]]]></description>
			<content:encoded><![CDATA[<p>Smoothing an image without losing all the edges, that&#8217;s what the Bilateral Filter is made for. It basically performs a Gaussian blur not only in the image dimensions, but also on the color intensities. Therefore it will smooth homogeneous areas while at the same time respecting the image&#8217;s edges. The following example shows the effect very well.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2025" title="Bilateral Example" src="http://www.anatomicaltravel.com/research/wp-content/uploads/BilateralChipCropC.png" alt="" width="600" height="230" /></p>
<p>The current version is for Fusion 6.1 in 64 bit <em>only</em>. It provides the standard bilateral filter as well as the cross bilateral filter for grayscale and color images. DoD and RoI can be used to limit processing to a desired section of the image. Since the exact filter is very slow when applying large filter kernels, calculation in OpenCL with an optional approximation method is implemented as well. First tests on supported graphic cards show a speed up by a factor of 3-5 for OpenCL with default parameters. On gray scale images with large filter sizes, the approximation method can be more than a hundred times faster.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1999" style="border: 0pt none;" title="BilaterialTilePic_onblack" src="http://www.anatomicaltravel.com/research/wp-content/uploads/BilaterialTilePic_onblack.png" alt="" width="160" height="120" /></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/BilaterialTilePic_onblack.png"></a><a href="http://www.anatomicaltravel.com/research/downloads/BilateralFilter.zip">Download Bilateral Filter 1.2</a><a href="http://www.anatomicaltravel.com/research/downloads/BilateralFilter.zip"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Bilateral Filter" alt="Download Bilateral Filter" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fun with OpenCL: Unit Vector</title>
		<link>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 14:35:46 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1939</guid>
		<description><![CDATA[Finally took the plunge and converted one of our icky Lua Fuses into shiny OpenCL.


It&#8217;s a very simple function, normalizing a vector and returning that in the RGB while putting the original length into the A.  In the case of the 4D normalize, you don&#8217;t get the length.  I have no idea what took me [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Finally took the plunge and converted one of our icky Lua Fuses into shiny <a href="http://www.khronos.org/opencl/">OpenCL</a>.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ImagesOpenCLUnitVector_onblack.png"><img class="size-full wp-image-1940  aligncenter" style="border: 0pt none;" title="OpenCLUnitVector" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ImagesOpenCLUnitVector_onblack.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/downloads/OpenCLUnitVector.fuse">Download Unit Vector OpenCL Fuse </a><a href="http://www.anatomicaltravel.com/research/downloads/OpenCLUnitVector.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Unit Vector OpenCL Fuse" alt="Download Unit Vector OpenCL Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: left;">It&#8217;s a very simple function, normalizing a vector and returning that in the RGB while putting the original length into the A.  In the case of the 4D normalize, you don&#8217;t get the length.  I have no idea what took me so long to get around to this, it only took an hour or two to flesh out, but I got hung up by the fact that my video card, a Quadro 5000, does not, at this time, have OpenCL drivers that support float3.  Float4?  Fine.  Float2?  No problem.  Float3?  Fail.  So I went ahead and implemented the 3D normalize manually, and used the fast_normalize OpenCL function to make a 4D normalize.</p>
<p style="text-align: left;"><span id="more-1939"></span></p>
<p style="text-align: left;">If you want to make your own OpenCL Fuse, make sure you turn on &#8220;Verbose console messages&#8221; in the preferences.  Would have saved me a lot of frustration had I done that from the beginning.  If you want to know what your machine&#8217;s OpenCL capabilities are, there is a &#8220;Debug: List OpenCL Device Info&#8221; when you shift-click on the cache meter.</p>
<p style="text-align: left;">I also copy-pasted my old Lua Fuse in there, which is great for testing, but also as a fallback in case OpenCL isn&#8217;t available.  Since even with the OpenCL, you have to do certain tasks no matter what (reading in parameters, outputting an image, etc) the speedup from using OpenCL will increase as the image size increases.  So while a 16&#215;16 image might not see any improvement, a 4096&#215;4096 image will see a huge boost.</p>
<p style="text-align: left;">When I get a valid OpenCL 1.1 driver, I might revisit this to see if I can increase the speed, but we&#8217;ll have to see.  Couple other notes, currently the OpenCL modes are limited by the maximum image size supported by your device.  I didn&#8217;t implement any chunking to get around that, but you can use the Lua mode.  I didn&#8217;t implement ROIDS, but I&#8217;ll get around to that soon.  With the OpenCL, it&#8217;s silly fast, so that&#8217;s not the issue, but it breaks a nice DoD chain if you have one.  For now use SetDomain.  Finally, there is no workgroup size management.  This is a REALLY simple kernel (which is why I chose to do it first) so it&#8217;s unlikely you&#8217;ll hit the 5000ms limit, but I suppose the risk is still there.  In my machine a 2048&#215;1556 image takes about 6.7ms.</p>
<p style="text-align: left;">So what&#8217;s next?  Any tool that we can make with these dead-simple OpenCL functions would be prime candidates, but really, OpenCL opens up the possibility, like we saw with CUDA and <a href="http://www.anatomicaltravel.com/research/2009/07/krazykey-keying-with-cuda/" title="KrazyKey - pixel by pixel keying, with the goodness of CUDA">KrazyKey</a>, to make tools of very high computational complexity if they are still highly parallel.  When the next revision of the SDK comes out, we&#8217;ll try adding OpenCL to some of our C++ plugins, too.  There&#8217;s also the mysterious &#8220;gl&#8221; OpenGL interop which piques my interest.</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alpha Divide/Multiply</title>
		<link>http://www.anatomicaltravel.com/research/2010/10/alpha-dividemultiply/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/10/alpha-dividemultiply/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 22:04:23 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1922</guid>
		<description><![CDATA[Stefan Ihringer pointed out something on the VFXPedia that finally got me to put together a Fuse I&#8217;ve been putting off.   Since Joe Laffey never got around to updating his plugins, it makes sense to go ahead and toss this up.


Just a simple RGB/A or RGB*A, plus a &#8220;Solid&#8221; and &#8220;Clear&#8221; so you don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>Stefan Ihringer <a href="http://www.vfxpedia.com/index.php?title=EyeonTips:Script/Reference/Applications/Fuse/Classes/Image/ChannelOpOf">pointed out something</a> on the <a href="http://www.vfxpedia.com/">VFXPedia</a> that finally got me to put together a Fuse I&#8217;ve been putting off.   Since Joe Laffey never got around to <a href="http://laffey.tv/plugins.html">updating his plugins</a>, it makes sense to go ahead and toss this up.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/AlphaDivideMultiply_onblack1.png"><img class="aligncenter size-full wp-image-1924" style="border: 0pt none;" title="AlphaDivideMultiply Fuse" src="http://www.anatomicaltravel.com/research/wp-content/uploads/AlphaDivideMultiply_onblack1.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/downloads/AlphaDivideMultiply.fuse">Download AlphaDivideMultiply Fuse 1.01</a><a href="http://www.anatomicaltravel.com/research/downloads/AlphaDivideMultiply.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download AlphaDivideMultiply Fuse" alt="Download AlphaDivideMultiply Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p>Just a simple RGB/A or RGB*A, plus a &#8220;Solid&#8221; and &#8220;Clear&#8221; so you don&#8217;t have to use the annoying Bol or Mat as much.   Nothing groundbreaking, but it should save a few clicks per day.</p>
<p>UPDATE:  I made <a href="http://www.anatomicaltravel.com/research/2011/09/alphadividemultiply-viewshader/" title="Alpha Divide/Multiply ViewShader">a ViewShader</a> for this in case you want to keep this operation in the viewer and not in the flow. <a href="http://www.anatomicaltravel.com/research/downloads/AlphaDivideMultiplyVS.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download AlphaMultiplyDivideVS" alt="Download AlphaMultiplyDivideVS" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/10/alpha-dividemultiply/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIP</title>
		<link>http://www.anatomicaltravel.com/research/2010/10/mip/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/10/mip/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 17:34:25 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Medical imaging]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1904</guid>
		<description><![CDATA[Not multum in parvo, but Maximum (or Minimum) Intensity Projection.


This simple Fuse just takes a range over time and generates an image with the highest or lowest pixels.  Great for normalizing.  It does so for each channel, so it can be useful for color normalization too, or for finding the bounding box of a position [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Not <em>multum in parvo</em>, but Maximum (or Minimum) Intensity Projection.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/MIP_onblack.png"><img class="aligncenter size-full wp-image-1905" style="border: 0pt none;" title="MIP_onblack" src="http://www.anatomicaltravel.com/research/wp-content/uploads/MIP_onblack.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/downloads/MIP_113.fuse">Download MIP Fuse 1.13</a><a href="http://www.anatomicaltravel.com/research/downloads/MIP_113.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download MIP Fuse" alt="Download MIP Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p>This simple Fuse just takes a range over time and generates an image with the highest or lowest pixels.  Great for normalizing.  It does so for each channel, so it can be useful for color normalization too, or for finding the bounding box of a position pass.  It can also be useful for making &#8220;summary&#8221; thumbnails of footage.</p>
<p><span id="more-1904"></span></p>
<p>There is also an option to output the maximum (or minimum) pixel value from the entire sample, in X, Y, and Time.  This is a number output suitable for connection to other number inputs.</p>
<a href="http://www.anatomicaltravel.com/research/downloads/MIP_Samples_C_A01_.comp">Download MIP Sample Comp A01</a><a href="http://www.anatomicaltravel.com/research/downloads/MIP_Samples_C_A01_.comp"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download MIP Sample Comp" alt="Download MIP Sample Comp" src="/research/images/download.gif" alt="" width="14" height="16" /></a>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/10/mip/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Fragment fun</title>
		<link>http://www.anatomicaltravel.com/research/2010/06/fragment-fun/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/06/fragment-fun/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 22:37:18 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Volume Rendering]]></category>
		<category><![CDATA[3D filtering]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[Teaser]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1662</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<div id="attachment_1663" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/Screengrab_C_A02_.jpg"><img class="size-full wp-image-1663  " style="border: 0pt none;" title="Because we couldn't wait for fuses" src="http://www.anatomicaltravel.com/research/wp-content/uploads/Screengrab_C_A02_.jpg" alt="Because we couldn't wait for fuses" width="600" height="461" /></a><p class="wp-caption-text">New shader(s) coming soon</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/06/fragment-fun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Color Blindness</title>
		<link>http://www.anatomicaltravel.com/research/2010/02/color-blindness/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/02/color-blindness/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 05:56:55 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1326</guid>
		<description><![CDATA[A sizable segment of the population suffers from color blindness, enough so that it&#8217;s worth considering the implications on color palettes and usability.  This tool allows you to simulate the ways that various color vision deficiencies will affect you imagery.  I&#8217;ve noticed that some of the images we create probably won&#8217;t read very well to [...]]]></description>
			<content:encoded><![CDATA[<p>A sizable segment of the population suffers from color blindness, enough so that it&#8217;s worth considering the implications on color palettes and usability.  This tool allows you to simulate the ways that various color vision deficiencies will affect you imagery.  I&#8217;ve noticed that some of the images we create probably won&#8217;t read very well to some people, and this easily lets us check if we&#8217;ve created something that could be ambiguous.</p>
<p style="text-align: center;">
<div id="attachment_1571" class="wp-caption aligncenter" style="width: 170px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorBlind_onblack.png"><img class="size-full wp-image-1571 " style="border: 0pt none;" title="ColorBlind fuse" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorBlind_onblack.png" alt="ColorBlind fuse" width="160" height="120" /></a><p class="wp-caption-text">ColorBlind fuse</p></div>
<p><span id="more-1326"></span></p>
<p style="text-align: left;">It&#8217;s not a perfect simulation, since it only does a linear color transform, not accounting for local color frequency, and it doesn&#8217;t account for any output specific color shifts.  Nothing unusual when it comes to color, of course.  Typical things to consider, colors may look different on an LCD screen compared to web offset printing.</p>
<p style="text-align: left;">You can use this as a viewer macro, though I may at some point make a proper Cg viewshader.</p>
<p style="text-align: left;"><a href="http://www.anatomicaltravel.com/research/downloads/ColorBlind.fuse">Download ColorBlind Fuse 1.0</a><a href="http://www.anatomicaltravel.com/research/downloads/ColorBlind.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download ColorBlind Fuse" alt="Download ColorBlind Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: left;">
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/02/color-blindness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color Matrix Transform</title>
		<link>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/</link>
		<comments>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 00:55:51 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1555</guid>
		<description><![CDATA[Fusion 6 added a Color Matrix tool that lets you enter your own matrix by hand, but the biggest problem with it is the lack of any methods to modify it with.  You can&#8217;t even assign controllers to it.
Fuses, however,  let you use handy methods to modify a matrix.  I&#8217;ve used some of them to [...]]]></description>
			<content:encoded><![CDATA[<p>Fusion 6 added a Color Matrix tool that lets you enter your own matrix by hand, but the biggest problem with it is the lack of any methods to modify it with.  You can&#8217;t even assign controllers to it.</p>
<p>Fuses, however,  let you use handy methods to modify a matrix.  I&#8217;ve used some of them to create an RGB equivalent of the 3D Transform tool.  It has a similar UI, just as 3TT does, but this modifies RGB, not XYZ or UVW.</p>
<p style="text-align: center;">
<div id="attachment_1571" class="wp-caption aligncenter" style="width: 170px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorMatrixTransform_onblack.png"><img class="size-full wp-image-1571 " style="border: 0pt none;" title="ColorMatrixTransform_onblack" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorMatrixTransform_onblack.png" alt="Color Matrix Tranform fuse" width="160" height="120" /></a><p class="wp-caption-text">Color Matrix Transform fuse</p></div>
<p><span id="more-1555"></span></p>
<p>Why would you want to do this?  Imagine that your RGB isn&#8217;t color, but UVW coordinates from a 3D render pass.  Now you can do texture transformations by using this tool to modify the mapping.  Also, if you have comps where you&#8217;re converting XYZ to RGB, you can use this to post-edit the tranformation, so you can apply spatial transformations in the form of XYZ -&gt; RGB -&gt; ColorMatrixTransform -&gt; XYZ.</p>
<p>In the future I might add an input and output similar to the Color Matrix tool so you can insert a matrix found elsewhere, as well as generate an output matrix you can read off, but for the time being, input matrices can processed by the Color Matrix tool just prior to the ColorMatrixTranform tool, just remember to use 32bit float colors.</p>
<p>If you&#8217;re a bit confused as to what the tool is doing, try viewing the results in the 3D Histogram SubV.   Really helps you get your bearings.</p>
<a href="http://www.anatomicaltravel.com/research/downloads/ColorMatrixTransform3.fuse">Download ColorMatrix Transform 1.1</a><a href="http://www.anatomicaltravel.com/research/downloads/ColorMatrixTransform3.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download ColorMatrix Transform" alt="Download ColorMatrix Transform" src="/research/images/download.gif" alt="" width="14" height="16" /></a>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

