Introduction
We often watch newspaper graph, however, if you watch this graph detail and then you will find out it was composed of many point pixels. Now, let’s do it. We can do with self. This is for beginners. It would be fun.
Background
Equipment Operation System: Microsoft Windows 7 Professional (64 bit) Development Utility: Microsoft Visual Studio 2010
Using the Code
for ( int iY = 0; iY < imageA->DibInfo->bmiHeader.biHeight; iY++ )
{
for ( int iX = 0; iX < imageA->DibInfo->bmiHeader.biWidth; iX++ )
{
lIDXA = ( iX * 3 ) + ( iY * imageA->DibInfo->bmiHeader.biWidth * 3 );
byteRGB_BA = imageA->DibArry[lIDXA+0];
byteRGB_GA = imageA->DibArry[lIDXA+1];
byteRGB_RA = imageA->DibArry[lIDXA+2];
dobYUV_YA = (0.299 * byteRGB_RA + 0.587 * byteRGB_GA + 0.114 * byteRGB_BA);
imageA->DibArry[lIDXA+0] = dobYUV_YA;
imageA->DibArry[lIDXA+1] = dobYUV_YA;
imageA->DibArry[lIDXA+2] = dobYUV_YA;
} }
int intY = 0;
int intX = 0;
int intODY = 0;
int intODX = 0;
int intGray = 0;
int intOD = 0;
int aryOrderedDither[3][3] = {{ 28,255, 57},
{142,113,227},
{170,198, 85}};
for ( intY = 0; intY < imageA->DibInfo->bmiHeader.biHeight - 3; intY+=3 )
{
for ( intX = 0; intX < imageA->DibInfo->bmiHeader.biWidth - 3; intX+=3 )
{
for ( intODY = 0; intODY < 3; intODY++ )
{
for ( intODX = 0; intODX < 3; intODX++ )
{
lIDXA = ( ( intX + intODX ) * 3 ) + ( ( intY + intODY ) *
imageA->DibInfo->bmiHeader.biWidth * 3 );
intGray = imageA->DibArry[lIDXA+0];
if ( intGray > aryOrderedDither [ intODY ][ intODX ] )
{
intOD = 255;
}
else
{
intOD = 0;
}
imageB->DibArry[lIDXA+0] = intOD;
imageB->DibArry[lIDXA+1] = intOD;
imageB->DibArry[lIDXA+2] = intOD;
} } } }
Exception
- There is a notice, if your bit depth of bitmap file is not 24 bits, you should change your bitmap files to adapt this program, or you could rewrite this source code to fit your bitmap format.
- You have to install Microsoft SDK v7.1, because I include windowscodes.lib.
#pragma comment(lib, "windowscodecs.lib")
Points of Interest
Reference [1] Gary Bradski and Adrian Kaehler, “Learning OpenCV: Computer Vision with the OpenCV Library,” O’REILLY, September 2008, ISBN:978-0-596-51613-0
Acknowledge
Thank you (Microsoft Visual Studio 2010, Lenna Sjööblom) very much for this great development utility and beautiful photo.