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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
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)
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)
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)
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)
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)
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)
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)
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)
Larese, M.G., Gomez, J.C.: Automatic spot addressing in cDNA microarray images. JCS &T 8 (2008)
Macgregor, F.P., Squire, A.J.: Application of microarrays to the analysis of gene expression in cancer. Clin. Chem. 48(8), 1170–1177 (2002)
Otsu, N.: A threshold selection method from gray-level histograms. IEEE Trans. Sys. Man. Cyber. 9, 62–66 (1979)
Petrov, A., Shams, S.: Microarray image processing and quality control: genomic signal processing. J. VLSI Signal Process. 38(3), 211–226 (2004)
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)
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)
StanislavSaic, B.M.: Using noise inconsistencies for blind image forensics. Image Vis. Comput. 27(10), 1497–1503 (2009)
Tu, Y., Stolovitzky, G., Klein, U.: Quantitative noise analysis for gene expression microarray. Proc. Natl. Acad. Sci. 99(22), 14031–14036 (2002)
Uma, S.R., Rajkumar, T.: DNA microarray and breast cancer-A review. Int. J. Hum. Genet. 7(1), 49–56 (2007)
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)
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
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Appendices
Appendix I
Algorithm for Noise Removal from the Microarray Plate
-
Step 1 :
Read an RGB Microarray Image.
-
Step 2 :
Convert the given image to gray.
-
Step 3 :
Calculate the graythresh value of the given image using Otsu Method.
-
Step 4 :
Convert the gray image to BW image using graythresh value.
-
Step 5 :
Remove from a binary image all connected components (objects) that have fewer than P pixels, producing another binary image.
-
Step 6 :
Create morphological structuring element.
-
Step 7 :
Perform morphological closing on the binary image obtained from step 4 with the structuring element created in the step 6.
-
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.
-
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.
-
Step 1 :
Compute histogram and probabilities of each intensity level
-
Step 2 :
Set up initial \(\upomega \)i(0) and \(\mu \)i(0)
-
Step 3 :
Step through all possible thresholds maximum intensity
-
Step 4 :
Update \(\upomega \)i and \(\mu \)i
-
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
-
Step 1:
Determine the connected components for BW image using 4-Connected Neighbourhood.
-
Step 2:
Compute the area of each component which are expressed in terms of Pixel.
-
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.
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
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)