Compare Bitmap Images

In this example we want to compare two mechanical drawings (raster images) to see the differences.


In [1]:
NB. Load required scripts
load 'graphics/bmp viewmat'




In [2]:
NB. Read first bitmap image
i1 =: readbmp jpath '~user/Jupyter_Notebook_J_Example_Data/assembly1.bmp'

In [3]:
NB. Show first bitmap image
viewrgb i1



In [4]:
NB. Read second bitmap image
i2 =: readbmp jpath '~user/Jupyter_Notebook_J_Example_Data/assembly2.bmp'

In [5]:
NB. Show second bitmap image
viewrgb i2



In [6]:
NB. Utility verb to create an integer representation from an RGB triple
RGB =: 3 : 0
   r =. |:0{|:y
   g =. |:1{|:y
   b =. |:2{|:y
   i =. <.((r*2^16)+(g*2^8)+b)
)

In [7]:
NB. First compare the arrays i1,i2 then multiply the result with i1
ia =: i1 * i1 = i2

In [8]:
NB. Show the resulting bitmap image
viewrgb ia



In [9]:
NB. We extract the differences and color them in red
ib =: (RGB 255,0,0) * ia e. 0

In [10]:
viewrgb ib



In [11]:
NB. Join both images using OR
id =: ia +. ib

In [12]:
NB. Show image differences in red
viewrgb id



In [ ]: