Skip to main content

Part of the book series: Advances in Intelligent Systems and Computing ((AISC,volume 236))

  • 1721 Accesses

Abstract

Microarray technique is used to study the role of genetics involved in the development of diseases in an early stage. Recently microarray has made an enormous contribution to explore the diverse molecular mechanisms involved in tumorigenesis. The end product of microarray is the digital image, whose quality is often degraded by noise caused due to inherent experimental variability. Therefore, noise reduction is a most contributing step involved in the microarray image processing to obtain high intensity gene expression results and to avoid biased results. Microarray data of breast cancer genes was obtained from National Institute of Animal Science and Rural Development Administration, Suwon, South Korea. Two algorithms were created for noise reduction and to calculate the intensity of gene expression of breast cancer susceptibility gene 1 (BRCA1) and breast cancer susceptibility gene 2 (BRCA2). The new algorithm successively decreased the noise and the expression value of microarray gene image was efficiently enhanced.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 259.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 329.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Adomas, A., Heller, G., Olson, A., Osborne, J., Karlsson, M., Nahalkova, J., Vanzyl, L., Sederoff, R., Stenlid, J., Finlay, R., Asiegbu, F.O.: Comparative analysis of transcript abundance in Pinus sylvestris after challenge with a saprotrophic pathogenic or mutualistic fungus. Tree Physiol. 28(6), 885–897 (2008)

    Article  Google Scholar 

  2. Birnie, R., Bryce, D.S., Roome, C., Dussupt, V., Droop, A., Lang, H.S., Berry, A.P., Hyde, F.C., Lewis, L.J., Stower, J.M., Maitland, J.N., Collins, T.A.: Gene expression profiling of human prostate cancer stem cells reveals a pro-inflammatory phenotype and the importance of extracellular matrix interactions. Genome Biol. 9(R83), 1–13 (2008)

    Google Scholar 

  3. Cai, X., Giannakis, G.B.: Identifying differentially expressed genes in microarray experiments with model-based variance estimation. IEEE Trans. Signal Process. 54(6), 2418–2426 (2006)

    Article  Google Scholar 

  4. Dror, R.: Noise models in gene array analysis. Report in fulfillment of the area exam requirement in the MIT Department of Electrical Engineering and Computer Science (2001)

    Google Scholar 

  5. Greenblum, S., Krucoff, M., Furst, J., Raicu, D.: Automated image analysis of noisy microarrays. Department of Biomedical Engineering and School of Computer Science, Telecommunications and Information systems, IL, USA (2006)

    Google Scholar 

  6. Hedenfalk, I., Duggan, D., Chen, Y., Radmacher, M., Bittner, M., Simon, R., Meltzer, P., Gusterson, B., Esteller, M., Kallioniemi, O.P., Wilfond, B., Borg, A., Trent, J., Raffeld, M., Yakhini, Z., Ben-Dor, A., Dougherty, E., Kononen, J., Bubendorf, L., Fehrle, W., Pittaluga, S., Gruvberger, S., Loman, N., Johannsson, O., Olsson, H., Sauter, G.: Gene-expression profiles in hereditary breast cancer. N. Engl. J. Med. 344, 539–548 (2001)

    Article  Google Scholar 

  7. Jain, A.N., Tokuyasu, T.A., Snijiders, A.M., Segraves, R., Albertson, D.G., Pinkel, D.: Fully automatic quantification of microarray image data. Genome Res. 12, 325–332 (2002)

    Article  Google Scholar 

  8. Jochumsen, K.M., Tan, Q., Dahlgaard, J., Kruse, A.T., Mogensen, O.: RNA quality and gene expression analysis of ovarian tumor tissue undergoing repeated thaw–freezing. Exp. Mol. Pathol. 82(1), 95–102 (2007)

    Article  Google Scholar 

  9. Larese, M.G., Gomez, J.C.: Automatic spot addressing in cDNA microarray images. JCS &T 8 (2008)

    Google Scholar 

  10. Macgregor, F.P., Squire, A.J.: Application of microarrays to the analysis of gene expression in cancer. Clin. Chem. 48(8), 1170–1177 (2002)

    Google Scholar 

  11. Otsu, N.: A threshold selection method from gray-level histograms. IEEE Trans. Sys. Man. Cyber. 9, 62–66 (1979)

    Article  Google Scholar 

  12. Petrov, A., Shams, S.: Microarray image processing and quality control: genomic signal processing. J. VLSI Signal Process. 38(3), 211–226 (2004)

    Article  Google Scholar 

  13. PhaniDeepti, G., Maruti, V.B., Jayanthi, S.: Impulse noise removal from color images with Hopfield neural network and improved vector median filter. In: Proceedings of the 6th Indian Conference on Computer Vision, Graphics and Image Processing, pp. 17–24. IEEE Computer Society (2008)

    Google Scholar 

  14. Smolka, B., Lukac, R., Plataniotis, K.N.: Fast noise reduction in cDNA microarray images. In: Proceedings of the 23rd Biennial Symposium, pp 348–351. IEEE Xplore (2006)

    Google Scholar 

  15. StanislavSaic, B.M.: Using noise inconsistencies for blind image forensics. Image Vis. Comput. 27(10), 1497–1503 (2009)

    Article  Google Scholar 

  16. Tu, Y., Stolovitzky, G., Klein, U.: Quantitative noise analysis for gene expression microarray. Proc. Natl. Acad. Sci. 99(22), 14031–14036 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  17. Uma, S.R., Rajkumar, T.: DNA microarray and breast cancer-A review. Int. J. Hum. Genet. 7(1), 49–56 (2007)

    Google Scholar 

  18. Vikalo, H., Hassibi, B., Hassibi, A.: A statistical model for microarrays, optimal estimation algorithms, and limits of performance. IEEE Trans. Signal Process. 54(6), 2444–2455 (2006)

    Article  Google Scholar 

  19. Yin, W., Chen, T., Zhou, X.S., Chakraborty, A.: Background correction for cDNA microarray images using the TV+L1. Advaced Access, publication February 22, 2005

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to S. Valarmathi .

Editor information

Editors and Affiliations

Appendices

Appendix I

Algorithm for Noise Removal from the Microarray Plate

  1. Step 1 :

    Read an RGB Microarray Image.

  2. Step 2 :

    Convert the given image to gray.

  3. Step 3 :

    Calculate the graythresh value of the given image using Otsu Method.

  4. Step 4 :

    Convert the gray image to BW image using graythresh value.

  5. Step 5 :

    Remove from a binary image all connected components (objects) that have fewer than P pixels, producing another binary image.

  6. Step 6 :

    Create morphological structuring element.

  7. Step 7 :

    Perform morphological closing on the binary image obtained from step 4 with the structuring element created in the step 6.

  8. Step 8 :

    Perform a flood-fill operation on background pixels of the input binary image obtained from step 7. The output is saved as Picture 1.

  9. Step 9 :

    The Picture 1 is compared with original image from which the final image is produced based on the white pixel shown in the Picture 1.

Algorithm to Convert RGB Image to Gray Image

  • For i \(=\) 0 To Picture1.ScaleWidth

    • For j \(=\) 0 To Picture1.ScaleHeight

      •             tcol = GetPixel(Picture1.hdc, i, j)

    • r \(=\) tcol Mod 256

    • g \(=\) (tcol / 256) Mod 256

      • b \(=\) tcol / 256 / 256

      • colour \(=\) r * 0.3 \(+\) g * 0.59 \(+\) b * 0.11

      • SetPixel Picture2.hdc, i, j, RGB(colour, colour, colour)

    • Next

  • Next

Algorithm for Obtaining Graythresh Value

Otsu shows that minimizing the intraclass variance is the same as maximizing interclass variance which is expressed in terms of class probabilities \(\omega \)i and class means \(\mu \)i which in turn can be updated iteratively. This idea yields an effective algorithm.

  1. Step 1 :

    Compute histogram and probabilities of each intensity level

  2. Step 2 :

    Set up initial \(\upomega \)i(0) and \(\mu \)i(0)

  3. Step 3 :

    Step through all possible thresholds maximum intensity

  4. Step 4 :

    Update \(\upomega \)i and \(\mu \)i

  5. Step 5 :

    Compute Desired threshold corresponds to the maximum

Algorithm to convert Gray Image to Black and White image

using Graythresh Value

  • For i \(=\) 0 To Picture1.ScaleWidth

  • For j \(=\) 0 To Picture1.ScaleHeight

  • tcol = GetPixel(Picture1.hdc, i, j)

  • if tcol \(>\) graythresh_value then

  • SetPixel Picture2.hdc, i, j, RGB(255, 255, 255)

  • else

  •             SetPixel Picture2.hdc, i, j, RGB(0, 0, 0)

  • endif

  • Next

  • Next

Algorithm to Remove Small Objects

  1. Step 1:

    Determine the connected components for BW image using 4-Connected Neighbourhood.

  2. Step 2:

    Compute the area of each component which are expressed in terms of Pixel.

  3. Step 3:

    Consider the only components whose pixels are greater than 10.

Create Morphological Elements using MATLAB

SE \(=\) strel(‘disk’, R, N) creates a flat, disk-shaped structuring element, where R specifies the radius. R must be a nonnegative integer. N must be 0, 4, 6, or 8. When N is greater than 0, the disk-shaped structuring element is approximated by a sequence of N periodic-line structuring elements. When N equals 0, no approximation is used, and the structuring element members consist of all pixels whose centers are no greater than R away from the origin. If N is not specified, the default value is 4.

figure a

Algorithm for Black and White Image to RGB

Step 1:

  • For i \(=\) 0 To Picture1.ScaleWidth

  • For j \(=\) 0 To Picture1.ScaleHeight

  • tol \(=\) GetPixel(Picture2.hdc, i, j)

  • If tol \(=\) 0 Then

  •             Grid2.TextMatrix(i, j) \(=\) 0

  • Else

  •             Grid2.TextMatrix(i, j) \(=\) 1

  • End If

  • Next

  • Next

Step 2:

  • Picture3.BackColor \(=\) vbBlack

  • Picture3.height \(=\) Picture1.height

  • Picture3.width \(=\) Picture1.width

  • For i \(=\) 0 To Picture1.ScaleWidth

    • For j \(=\) 0 To Picture1.ScaleHeight

    • If Grid2.TextMatrix(i, j) \(=\) 1 Then

    •             SetPixel Picture3.hdc, i, j, val(Grid1.TextMatrix(i, j))

    • End If

    • Next

  • Next

Appendix II

Algorithm for Calculating Expression Value for each spot

in Microarray Plate

  • x \(=\) imread(‘MicroArraySlide.JPG’);

    • %x \(=\) imread(‘microarray_test6_agri.JPG’);

    • %x \(=\) imread(‘Composite-s416–.jpg’);

    • %x \(=\) imread(‘dna_microarray.JPG’);

    • %x \(=\) imread(‘t1.JPG’);

    • %x \(=\) imread(‘t9.jpg’)

    • %x \(=\) imread(‘t5.jpg’)

    • %x \(=\) imread(‘t10.jpg’)

    • %x \(=\) imread(‘microarray_test1_agri_rice.JPG’);

    • %x \(=\) imread(‘t4.JPG’);

  • imageSize \(=\) size(x)

  • screenSize \(=\) get(0,‘ScreenSize’)

  • iptsetpref(‘ImshowBorder’, ‘tight’)

  • imshow(x)

title(‘original image’)

                         Crop Specified Region

  • %y \(=\) imcrop(x, [622 2467 220 227]);

  • \({[\text {y,RECT}]}=\) imcrop(x) %, [398 449 218 214]);

  •             %y \(=\) imcrop(x, [398 449 218 214]);

  •             f1 \(=\) figure(‘position’, [40 46 285 280]);

  • imshow(y)

                         Display Red and Green Layers

  • f2 \(=\) figure(‘position’, [265 163 647 327]);

  • subplot(121)

    • redMap \(=\) gray(256);

    • redMap(:, [2 3]) \(=\) 0;

    • t \(=\) subimage(y(:,:,1), redMap)

  • axis off

  • title(‘red (layer 1)’)

  • subplot(122)

    • greenMap \(=\) gray(256);

    • greenMap(:, [1 3]) \(=\) 0;

  • subimage(y(:, :, 2),greenMap)

  • axis off

  • title(‘green (layer 2)’)

                         Convert RGB Image to Grayscale for Spot Finding

  • z \(=\) rgb2gray(y);

  • figure(f1)

  • imshow(z)

                         Create Horizontal Profile

  • xProfile \(=\) mean(z);

    • f2 \(=\) figure(‘position’, [39 346 284 73]);

  • plot(xProfile)

    • title(‘horizontal profile’)

  • axis tight

                         Estimate Spot Spacing by Autocorrelation

  • ac \(=\) xcov(xProfile);

  • f3 \(=\) figure(‘position’, [-3 427 569 94]);

  • plot(ac)

    • s1 \(=\) diff(ac([1 1:end]));

    • s2 \(=\) diff(ac([1:end end]));

    • maxima \(=\) find(s1\(>\)0 & s2\(<\)0);

    • estPeriod \(=\) round(mean(diff(maxima)))

  • hold on

    • plot(maxima,ac(maxima), ‘\({\text {r}}^{ \wedge }\)’)

  • hold off

    • title(‘autocorrelation of profile’)

  • axis tight

                         Remove Background Morphologically

  • seLine \(=\) strel(‘line’, estPeriod, 0);

    • %seLine \(=\) strel(‘disk’, 2);

    • xProfile2 \(=\) imtophat(xProfile,seLine);

    • f4 \(=\) figure(‘position’, [40 443 285 76]);

  • plot(xProfile2)

  • title(‘enhanced horizontal profile’)

  • axis tight

                         Segment Peaks

  • level \(=\) graythresh(xProfile2/255)*255

    • bw \(=\) im2bw(xProfile2/255, level/255);

    • L \(=\) bwlabel(bw);

    • f5 \(=\) figure(‘position’, [40 540 285 70]);

  • plot(L)

  • axis tight

  • title(‘labelled regions’)

                         Locate Centers

  • stats \(=\) regionprops(L);

    • centroids \(=\) [stats.Centroid];

    • xCenters \(=\) centroids(1:2:end)

  • figure(f5)

  • hold on

    • plot(xCenters, 1:max(L), ‘ro’)

  • hold off

    • title(‘region centers’)

                         Determine Divisions between Spots

  • gap \(=\) diff(xCenters)/2;

  • first \(=\) abs(xCenters(1) \(-\) gap(1));

  • xGrid \(=\) round([first xCenters(1:end) \(+\) gap([1:end end])])

                         Transpose and Repeat

  • yProfile \(=\) mean(z’);

    • ac \(=\) xcov(yProfile);

    • p1 \(=\) diff(ac([1 1:end]));

    • p2 \(=\) diff(ac([1:end end]));

    • maxima \(=\) find(p1\(>\)0 & p2\(<\)0);

    • estPeriod \(=\) round(mean(diff(maxima)))

    • seLine \(=\) strel(‘line’, estPeriod, 0);

  • %seLine \(=\) strel(‘disk’, 2);

    • yProfile2 \(=\) imtophat(yProfile, seLine);

    • level \(=\) graythresh(yProfile2/255);

    • bw \(=\) im2bw(yProfile2/255, level);

    • L \(=\) bwlabel(bw);

    • stats \(=\) regionprops(L);

    • centroids \(=\) [stats.Centroid];

    • yCenters \(=\) centroids(1:2:end)

    • gap \(=\) diff(yCenters)/2;

    • first \(=\) abs(yCenters(1)-gap(1));

                         List Defining Vertical Boundaries between Spot Regions

  • yGrid \(=\) round([first yCenters(1:end) \(+\) gap([1:end end])])

    • f7 \(=\) figure(‘position’, [52 94 954 425]);

    • ax(1) \(=\) subplot(121);

  • subimage(y(:, :, 1), redMap)

    • title(‘red intensity’)

    • ax(2) \(=\) subplot(122);

  • subimage(y(:, :, 2), greenMap)

    • title(‘green intensity’)

    • f8 \(=\) figure(‘position’, [316 34 482 497]);

  • ax(3) \(=\) get(imshow(y, ‘notruesize’), ‘parent’);

    • title(‘gene expression’)

  • for i=1:3

    • axes(ax(i))

    • axis off

  • line(xGrid’*[1 1], yGrid([1 end]), ‘color’, 0.5*[1 1 1])

  • line(xGrid([1 end]), yGrid’*[1 1], ‘color’, 0.5*[1 1 1])

  • end

  • \( {\text {[X, Y]}}\) = meshgrid(xGrid(1:end-1), yGrid(1:end \(-\) 1));

  • \( {\text {[dX, dY]}}\)= meshgrid(diff(xGrid), diff(yGrid));

  • ROI \(=\) [X(:) Y(:) dX(:) dY(:)];

                         Segment Spots from Background by Thresholding

  • fSpots \(=\) figure(‘position’, [265 163 647 327]);

  • subplot(121)

  • imshow(z)

  • title(‘gray image’)

  • subplot(122)

    • bw \(=\) im2bw(z, graythresh(z));

  • imshow(bw)

  • title(‘global threshold’)

                         Apply Logarithmic Transformation then Threshold Intensities

  • figure(fSpots)

  • subplot(121)

    • z2 \(=\) uint8(log(double(z) \(+\) 1)/log(255)*255);

  • imshow(z2)

  • title(‘log intensity’)

  • subplot(122)

    • bw \(=\) im2bw(z2, graythresh(z2));

  • imshow(bw)

  • title(‘global threshold’)

                         Try local Thresholding Instead

  • figure(fSpots)

  • subplot(122)

    • bw \(=\) false(size(z));

    • for i\(=\)1:length(ROI)

      • rows \(=\) round(ROI(i, 2)) \(+\) [0:(round(ROI(i, 4))-1)];

      • cols \(=\) round(ROI(i, 1)) \(+\) [0:(round(ROI(i, 3))-1)];

      • spot \(=\) z(rows, cols);

      • bw(rows, cols) \(=\) im2bw(spot, graythresh(spot));

    • end

  • imshow(bw)

  • title(‘local threshold’)

                         Logically Combine Local and Global Thresholds

  • figure(fSpots)

  • subplot(121)

    • bw \(=\) im2bw(z2, graythresh(z2));

    • for i\(=\)1:length(ROI)

      • rows \(=\) round(ROI(i, 2)) \(+\) [0:(round(ROI(i, 4))-1)];

      • cols \(=\) round(ROI(i, 1)) \(+\) [0:(round(ROI(i, 3))-1)];

      • spot \(=\) z(rows, cols);

      • bw(rows, cols) \(=\) bw(rows, cols) \({\vert }\) im2bw(spot, graythresh(spot));

    • end

  • imshow(bw)

    • title(‘combined threshold’)

  • subplot(122)

  • imshow(z)

    • title(‘linear intensity’)

                         Fill Holes to Solidify Spots

  • figure(fSpots)

  • subplot(121)

    • for i\(=\)1:length(ROI)

      • rows \(=\) round(ROI(i, 2)) \(+\) [0:(round(ROI(i, 4))-1)];

      • cols \(=\) round(ROI(i, 1)) \(+\) [0:(round(ROI(i, 3))-1)];

      • bw(rows, cols) \(=\) imfill(bw(rows, cols), ‘holes’);

    • end

  • seDisk \(=\) strel(‘disk’, round(estPeriod));

  • L \(=\) zeros(size(bw));

    • for i\(=\)1:length(ROI)

      • rows \(=\) ROI(i, 2) \(+\) [0:(ROI(i, 4)-1)];

      • cols \(=\) ROI(i, 1) \(+\) [0:(ROI(i, 3)-1)];

      • rectMask \(=\) L(rows, cols);

      • spotMask \(=\) bw(rows, cols);

      • rectMask(spotMask) \(=\) i;

      • L(rows, cols) \(=\) rectMask;

    • end

  • spotData \(=\) [ROI zeros(length(ROI), 5)];

    • for i\(=\)1:length(ROI)

      • spot \(=\) imcrop(y, ROI(i, :));

      • spot2 \(=\) imtophat(spot, seDisk);

      • mask \(=\) imcrop(L, ROI(i, :))==i;

    • for j\(=\)1:2

      • layer \(=\) spot2(:, :, j);

      • intensity(j) \(=\) double(median(layer(mask)));

    • text(ROI(i, 1) \(+\) ROI(i, 3)/2, ROI(i, 2) \(+\) ROI(i, 4)/2, sprintf(‘%.0f’, intensity(j)),...

      • ‘color’,‘y’, ‘HorizontalAlignment’, ‘center’, ‘parent’, ax(j))

      • rawLayer \(=\) spot(:, :, j);

      • rawIntensity(j) \(=\) double(median(layer(mask)));

    • end

    • expression \(=\) log(intensity(1)/intensity(2));

    • text(ROI(i, 1) \(+\) ROI(i, 3)/2, ROI(i, 2) \(+\) ROI(i, 4)/2, sprintf(‘%.2f’, expression),...

      • ‘color’, ‘w’, ‘HorizontalAlignment’, ‘center’, ‘parent’, ax(3))

      • drawnow

      • spotData(i, 5:9) \(=\) [intensity(:)’ expression rawIntensity(:)’];

    • end

    • xlswrite(‘microarray.xls’, spotData)

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer India

About this paper

Cite this paper

Valarmathi, S., Sulthana, A., Latha, K.C., Rathan, R., Sridhar, R., Balasubramanian, S. (2014). Noise Reduction from the Microarray Images to Identify the Intensity of the Expression. In: Babu, B., et al. Proceedings of the Second International Conference on Soft Computing for Problem Solving (SocProS 2012), December 28-30, 2012. Advances in Intelligent Systems and Computing, vol 236. Springer, New Delhi. https://doi.org/10.1007/978-81-322-1602-5_146

Download citation

  • DOI: https://doi.org/10.1007/978-81-322-1602-5_146

  • Published:

  • Publisher Name: Springer, New Delhi

  • Print ISBN: 978-81-322-1601-8

  • Online ISBN: 978-81-322-1602-5

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics