No BSD License  

Highlights from
Quantitative High-Throughput Gene Expression Imaging

image thumbnail

Quantitative High-Throughput Gene Expression Imaging



17 Jan 2007 (Updated )

Image Processing for Quantitative Gene Expression Analysis of Drosophila Embryo Images

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

function [rsmooth,gsmooth,bsmooth,stdim] = flyproc(im)

% This function contains the same algorithm as the demo script flyexdemo.m.
% All graphical output steps have been removed, and the script has been
% converted into a function which takes as input the filename of a
% Drosophila image, and outputs the rotated and cropped image, along with
% curves fit to the red, green and blue channels. It is used as a utility
% function by localflyexdemo.m and dctflyexdemo.m.
% This function uses the Image Processing ans Curve Fitting Toolboxes.
% Sam Roberts

%   Copyright 2006 The MathWorks, Inc.

im = imread(im);

RGBmax = max(im,[],3);

mask = im2bw(RGBmax,20/255);

mask = medfilt2(mask,[3,3]);

mask = imclose(mask,strel('disk',5,0));

L = bwlabel(mask);

stats = regionprops(L,...

stdim = imrotate(im,-stats.Orientation);
warning off MATLAB:colon:nonIntegerIndex
stdim = stdim(size(stdim,1)/2-stats.MinorAxisLength/2:size(stdim,1)/2+stats.MinorAxisLength/2,...
warning on MATLAB:colon:nonIntegerIndex

RGBmax = max(stdim,[],3);

RGBequal = adapthisteq(RGBmax,'NumTiles',...

RGBequal = medfilt2(RGBequal);

[L,num] = bwlabel(bw,4);

stats = regionprops(L,'Centroid','PixelIdxList');

r = squeeze(stdim(:,:,1));
g = squeeze(stdim(:,:,2));
b = squeeze(stdim(:,:,3));
for i=1:num
    data(i,1:2) = stats(i).Centroid./[columns,rows]*100;

middlestrip = (data(:,2)>40 & data(:,2)<60);
middledata = data(middlestrip,:);

opts = fitoptions('smoothingspline','SmoothingParam',0.01);
fitresultr = fit(middledata(:,1),middledata(:,3),'smoothingspline',opts);
fitresultg = fit(middledata(:,1),middledata(:,4),'smoothingspline',opts);
fitresultb = fit(middledata(:,1),middledata(:,5),'smoothingspline',opts);

rsmooth = feval(fitresultr,0:100);
gsmooth = feval(fitresultg,0:100);
bsmooth = feval(fitresultb,0:100);

Contact us