{"id":4859,"date":"2025-04-28T12:00:37","date_gmt":"2025-04-28T19:00:37","guid":{"rendered":"https:\/\/www.cloudacm.com\/?p=4859"},"modified":"2025-04-28T10:32:35","modified_gmt":"2025-04-28T17:32:35","slug":"mimic-color-blindness-with-ffmpeg","status":"publish","type":"post","link":"https:\/\/www.cloudacm.com\/?p=4859","title":{"rendered":"Mimic Color Blindness with FFMpeg and IM"},"content":{"rendered":"<p>In earlier posts, I have used color scales to represent images in false color or data sets.\u00a0 They typically followed what was available in the tools I used.\u00a0 As it turns out, those color scales took into account color blindness that affects a large portion of people.<\/p>\n<p><iframe loading=\"lazy\" title=\"How Color Blindness Works\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/iNRQB5309yo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>In this post, I&#8217;ll be using FFMpeg and Imagemagick to approximate the effect of what types of color blindness are like.\u00a0 I&#8217;ll be covering 3 main types, Protanopia, Deuteranopia, and Tritanopia.<\/p>\n<p>These IM commands were used against a color bar pattern typically used for testing a NTSC TV screen.<\/p>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4863 size-medium\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars-300x169.jpeg\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars-300x169.jpeg 300w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars-768x433.jpeg 768w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars-479x270.jpeg 479w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/colorbars.jpeg 852w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<pre># Protanopia \r\n# This 3\u00d73 matrix reweights the red, green, and blue channels so that red contributions are less prominent, approximating a protanopic view.\r\n\r\nconvert colorbars.jpeg -color-matrix \"0.567 0.433 0 0.558 0.442 0 0 0.242 0.758\" output_protanopia.png<\/pre>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-4864\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia-300x169.png 300w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia-768x433.png 768w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia-479x270.png 479w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_protanopia.png 852w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<pre># Deuteranopia \r\n# Here the matrix shifts the balance between red and green channels, making greens less distinct to mimic deuteranopia.\r\n\r\nconvert colorbars.jpeg -color-matrix \"0.625 0.375 0 0.700 0.300 0 0 0.300 0.700\" output_deuteranopia.png<\/pre>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-4865\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia-300x169.png 300w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia-768x433.png 768w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia-479x270.png 479w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_deuteranopia.png 852w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<pre># Tritanopia \r\n# This transformation reduces the influence of blue light while adjusting the green channel, simulating a tritanopic view.\r\n\r\nconvert colorbars.jpeg -color-matrix \"0.950 0.050 0 0 0.433 0.567 0 0.475 0.525\" output_tritanopia.png<\/pre>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-4866\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia-300x169.png 300w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia-768x433.png 768w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia-479x270.png 479w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2025\/04\/output_tritanopia.png 852w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The FFMpeg commands follow a similar logic when shifting colors in the RGB set.\u00a0 The following code was used to generate the 3 types of color blindness based on a source video.<\/p>\n<pre># Protanopia \r\n\r\nffmpeg -i MINI0038_Full_Stab.MOV -vf \"colorchannelmixer=rr=0.567:rg=0.433:rb=0:gr=0:gg=0.558:gb=0.442:br=0:bg=0.242:bb=0.758\" MINI0038_Full_Stab_protanopia.MOV\r\n\r\n# Deuteranopia \r\n\r\nffmpeg -i MINI0038_Full_Stab.MOV -vf \"colorchannelmixer=rr=0.625:rg=0.375:rb=0:gr=0:gg=0.700:gb=0.300:br=0:bg=0.300:bb=0.700\" MINI0038_Full_Stab_deuteranopia.MOV\r\n\r\n# Tritanopia \r\n\r\nffmpeg -i MINI0038_Full_Stab.MOV -vf \"colorchannelmixer=rr=0.950:rg=0.050:rb=0:gr=0:gg=0.433:gb=0.567:br=0:bg=0.475:bb=0.525\" MINI0038_Full_Stab_tritanopia.MOV<\/pre>\n<p>The following video is tiled displaying all examples.\u00a0 The source video in the upper left, protanopia in the upper right, deuteranopia in the lower left, and tritanopia in the lower right.<\/p>\n<p><iframe loading=\"lazy\" title=\"Mimic Color Blindness with FFMpeg\" src=\"https:\/\/player.vimeo.com\/video\/1079472527?dnt=1&amp;app_id=122963\" width=\"640\" height=\"360\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media\"><\/iframe><\/p>\n<p>Here is the code used to generate the video above.<\/p>\n<pre>ffmpeg -i \"MINI0038_Full_Stab.MOV\" -vf \"[in] scale=iw:ih, pad=2*iw:ih [left];movie=MINI0038_Full_Stab_protanopia.MOV, scale=iw:ih [right]; [left][right] overlay=main_w\/2:0 [out]\" \"SideBySide_Top.MOV\"\r\nffmpeg -i \"MINI0038_Full_Stab_deuteranopia.MOV\" -vf \"[in] scale=iw:ih, pad=2*iw:ih [left];movie=MINI0038_Full_Stab_tritanopia.MOV, scale=iw:ih [right]; [left][right] overlay=main_w\/2:0 [out]\" \"SideBySide_Bottome.MOV\"\r\nffmpeg -i \"SideBySide_Top.MOV\" -vf \"pad=iw:2*ih [top]; movie=SideBySide_Bottome.MOV [bottom]; [top][bottom] overlay=0:main_h\/2\" \"Tiled_4_Camera_View.MOV\"\r\nffmpeg -i Tiled_4_Camera_View.MOV -vf \"scale=iw*.25:ih*.25\" Tiled_4_Camera_View_DownScaled.MOV<\/pre>\n<p>This video provides and interesting anthropological view of color vision.<\/p>\n<p><iframe loading=\"lazy\" title=\"The surprising pattern behind color names around the world\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/gMqZR3pqMjg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In earlier posts, I have used color scales to represent images in false color or data sets.\u00a0 They typically followed what was available in the tools I used.\u00a0 As it turns out, those color scales took into account color blindness that affects a large portion of people. In this post, I&#8217;ll be using FFMpeg and Imagemagick to approximate the effect of what types of color blindness are like.\u00a0 I&#8217;ll be covering 3 main types, Protanopia, Deuteranopia, and Tritanopia. These IM&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.cloudacm.com\/?p=4859\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4859","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/4859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4859"}],"version-history":[{"count":13,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/4859\/revisions"}],"predecessor-version":[{"id":4876,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/4859\/revisions\/4876"}],"wp:attachment":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}