1. What is rMQR Code?

rMQR Code is a matrix-type, two-dimensional code that is easy to read and can store large amounts of information, while being a rectangular shape that makes it easy to print in narrow spaces. It addresses the need to print in narrow spaces where conventional QR Code could not be printed, and to store more information than possible with Micro QR Code.

rMQR Code Features

The rMQR Code has the four encoding modes Numeric, Alphanumeric, Byte and Kanji to convert data efficiently. 

You can read more details about rMQR code from DENSO or from IEC standard ISO-IEC-23941-2022

Before start doing any experiment we need the following: 
Internet access for online printing the rMQR, mobile phone app for reading and decoding the rMQR and simple image processing using imageJ software.

To read the rMQR, download the SW application from Google Play or App Store application developed by Denso wave.

Or visit the Denso Wave site for more details for downloading the QRQR app for smartphones.

we can generate the rMQR code online using Takahiro Tomita site. Or just scan the below rMQR code to reach the site.

The python source code of the rMQR code generator project can be found in the Github or at PyPI

For image processing we will be using National Institutes of Health's ImageJ available for free download from HERE

Some color basics:

For display RGB colors are used while printing CMYK colors are used. We can either use additive or subtractive process.

Splitting the RGB channels:

The above image is a RGB composite image. If we split the Red, Green and Blue layers we will be getting the following.

The top 3 images are monochrome images with RGB channel seperation and image channel name mentioned in the image top. The bottom images are also the same with channel color. To get the bottom 3 images we need to select the Composite Image option in the ImageJ after loading the Composite Image.

Applying the same concept in the reverse we can add 3 Monochrome images to form a single Composite color image.

In the following we will try to combine 3 monochrome barcode images into a single composite RGB image.

SMART
Image I - SMART - RED channel - 7x43
DREAM
Image II - DREAM - Green channel - 7x43
POWER
Image III - POWER - Blue channel - 7x43

If we combine the above 3 monochrome channels into composite RGB image we will be getting as image below

The resultant image having RGB and CMYK colors. If we notice the Composite image, the finder pattern, sub-finder pattern, alignment pattern along with timing pattern remains in black. These are common for all the above 3 images so it becomes black. If there is no overlapping pixels, it will be represented in the original channel color(Red,Green or Blue). If there are two channels sharing a common pixel, the pixel will change from RGB to CMY depends upon which 2 channels shares the pixel. If all the 3 channels shares a common pixel, the pixel color will become black.

Now we will take the resultant Composite image and try to retrive the original 3 channels or 3 monochrome barcodes.

The above is the result of the splitted RGB channels from the composite image. Now we got all the 3 images back without any loss of information.

ImageJ menus:

To merge 3 images first we need to open 3 images of same size. Then in the Image tab got to Color > Merge Channels

After selecting Merge Channels, there will be a screen pop-up to assign the desired channel to the images as follows.

You can assingn the Channels C1, C2 and C3 with the desired images in any order. But while splitting we will get the images in the same order. So if you have any preference in sequence, it should be followed. If you need the source images, you need to check the Keep source images box. After clicking OK, we will get the Composite image as below.

Now you can save the Composite Image which contains the information of the 3 images stored in RGB channels.

For generating the original 3 images, just load the Composite image and apply Color Split Channels from Image Tab.

If you select Make Composite, you will get Red, Green and Blue channel images. If you just select Split Channels, you will get original 3 monochrome images without Red, Green and Blue background. But the Channel names will be mentioned in the top of the images, if you have not selected Make Composite option. For reading and decoding it does not matter.

As per the rQMR standard, the maximum capacity is 361 characters. So we can easily accommodate more than 1000 charcters in the same size matrix using same number of rows and columns.

Currently the On-line rQMR generator supports maximum of 150 characters. So let us try generating 450 characters which is well above the 361 characters limit.

We will use 449 digits of Pi as test data. We will split 450 digits into 3 groups. First 150 digits we will assign to Red channel followed by another 150 digits into Green channel and the remaining 150 digits to Blue channel.

First 150 characters of Pi

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081

 Next 150 digits of Pi(150 to 300)

284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412

Remaining 150 digits(300 to 450)

737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185

So these codes in total contains 449 digits of Pi which includes the decimal point(.)

Now if we assign the first image to RED channel, second image to GREEN channel and the final image to BLUE channel and Merge Channels will result with a Composite Image of same size contains information of 450 digits. The Merged resultant Composite image looks like below

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185

As explained previously, the RGB and CMYK colors having all the three channels information merged into single image with same size of the original image. There is no increase in size, row or column.

Now we can split the Composite image to get three individual channels in the same sequence.

The above image is the result of the splitted Composite RGB image. After splitting we got 3 images of same size. We need to follow the same sequence of encoding to get the correct decoding of the data.

The above rMQR were tested and able to read 449 digits of Pi without any issues.

QR Code Reader “QRQR” also supports the inverted mode scan. Instead of black barcode printed on white surface, we can print a white barcode on a black surface.

The normal rMQR code looks like the following

and the inverted rMQR code looks like below

The QRQR scanner capable of reading without any error or issues.

Similarly we can invert the rMQR generated by merging 3 images.

The above rMQR code is the inverted composite image.

After splitting the above channel into separate 3 channels we will be getting as below

The QR Code Reader “QRQR” reads the above codes without any error or issues.

The RED channel scanned result is 

and the GREEN channel result as below

and the BLUE channel scan result as below

So we are able to recover all the 449 digits of Pi without any error or issues.

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081

284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412

737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185