fixed_bright = imread('brightcut.tif');
J = imcomplement(fixed_bright);
contrastNum=[0.5 1];
fixed_trans=imadjust(J, contrastNum,[]);imshow(fixed_trans);
originalImage=imread('brightcut.tif');
ProteinSignal=imread('cropprotein.tif');
thresholdValue = 300;
radius=4;
PixelCut=10;
Cycl1Moved=imread('cycle 1 moved2.tif');
Cycl2Moved=imread('cycle 2 moved.tif');
Cycl3Moved=imread('cycle 3 moved.tif');
Cycl4Moved=imread('cycle 4 moved.tif');
ProteinSignal=imread('cropProtein.tif');
[m,n]=size(fixed_trans);
ArrayResult={'Array row', 'Array col', 'Median Intensity', 'Cycle 1', 'Cycle 2', 'Cycle 3', 'Cycle 4'};
Rows=1; Cols=1;
Xblock=1;Yblock=1;
Xlow=round((Xblock-1)*m/Rows)+1; Xhigh=round(Xblock*m/Rows)-1;
Ylow=round((Yblock-1)*n/Cols)+1; Yhigh=round(Yblock*n/Cols)-1;
brightcut=fixed_trans(Xlow:Xhigh,Ylow:Yhigh,:);
cropProtein=ProteinSignal(Xlow:Xhigh,Ylow:Yhigh,:);
CropCycl1Moved= Cycl1Moved(Xlow:Xhigh,Ylow:Yhigh,:);
CropCycl2Moved= Cycl2Moved(Xlow:Xhigh,Ylow:Yhigh,:);
CropCycl3Moved= Cycl3Moved(Xlow:Xhigh,Ylow:Yhigh,:);
CropCycl4Moved= Cycl4Moved(Xlow:Xhigh,Ylow:Yhigh,:);
originalImage=fixed_trans;
subplot(1, 2, 1);
imshow(originalImage);
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
drawnow;
captionFontSize=14;
caption = sprintf('Original and marked');
title(caption, 'FontSize', captionFontSize);
axis image;
KK = imcomplement(originalImage);
binaryimageTrans=KK>thresholdValue;
binaryImage = bwareaopen (binaryimageTrans, PixelCut);
labeledImage = bwlabel(binaryImage, 8);
coloredLabels = label2rgb (labeledImage, 'hsv', 'k', 'shuffle');
subplot(1,2,2);
imshow(coloredLabels);
axis image;
caption = sprintf('Numbered from top to bottom, then from left to right.');
title(caption, 'FontSize', captionFontSize);
blobMeasurements = regionprops(labeledImage, originalImage, 'all');
numberOfBlobs = size(blobMeasurements, 1);
axis image;
textFontSize = 5;
labelShiftX = 0;
allBlobCentroids = [blobMeasurements.Centroid];
centroidsX = allBlobCentroids(1:2:end-1);
centroidsY = allBlobCentroids(2:2:end);
subplot(1, 2,2);
radii=ones(numberOfBlobs,1)*radius;
centroidsAll=[centroidsX' centroidsY'];
viscircles(centroidsAll,radii)
for i=1:numberOfBlobs
if (centroidsAll(i,1)>(Xhigh-Xlow)) || (centroidsAll(i,2)>(Yhigh-Ylow))
centroidsAll(i,:)=10;
end
if (centroidsAll(i,1)<4) || (centroidsAll(i,2)<4)
centroidsAll(i,:)=10;
end
end
for k = 1 : numberOfBlobs
text(centroidsX(k) + labelShiftX, centroidsY(k), num2str(k), 'FontSize', textFontSize, 'FontWeight', 'Bold');
end
MedianIntensity=zeros(numberOfBlobs,1);
for k = 1 : numberOfBlobs
temp=round(centroidsAll(k,:));
Intensity=cropProtein(temp(1,1),temp(1,2));
for i=1:(2*radius)
for j=1:(2*radius)
if ((i-radius)^2+(j-radius)^2)<radius^2
intentemp=cropProtein(round(temp(1,1)-radius+i),round(temp(1,2)-radius+j));
Intensity=[Intensity; intentemp];
end
end
end
MedianIntensity(k,1)=median(Intensity);
end
figure
tempt1=brightcut;
tformEstimate = imregcorr(CropCycl1Moved,tempt1); Rfixed = imref2d(size(tempt1)); CropCycl1Ajust = imwarp(CropCycl1Moved,tformEstimate,'OutputView',Rfixed);
subplot(1, 4, 1); overlap=imfuse(tempt1, CropCycl1Ajust,'blend','Scaling','joint'); imshow(overlap);
tformEstimate = imregcorr(CropCycl2Moved,tempt1); Rfixed = imref2d(size(tempt1)); CropCycl2Ajust = imwarp(CropCycl2Moved,tformEstimate,'OutputView',Rfixed);
subplot(1, 4, 2);overlap=imfuse(tempt1, CropCycl2Moved,'blend','Scaling','joint'); imshow(overlap);
tformEstimate = imregcorr(CropCycl3Moved,tempt1); Rfixed = imref2d(size(tempt1)); CropCycl3Ajust = imwarp(CropCycl3Moved,tformEstimate,'OutputView',Rfixed);
subplot(1, 4, 3);overlap=imfuse(tempt1, CropCycl3Moved,'blend','Scaling','joint'); imshow(overlap);
tformEstimate = imregcorr(CropCycl4Moved,tempt1); Rfixed = imref2d(size(tempt1)); CropCycl4Ajust = imwarp(CropCycl4Moved,tformEstimate,'OutputView',Rfixed);
subplot(1, 4, 4);overlap=imfuse(tempt1, CropCycl4Moved,'blend','Scaling','joint'); imshow(overlap);
ColorMatrix=string([numberOfBlobs,4]);
color=string([numberOfBlobs,1]);
for k = 1 : numberOfBlobs
tempcolor=round(centroidsAll(k,:));
BackgroundR=mean(mean(CropCycl1Ajust(:,:,1))); BackgroundG=mean(mean(CropCycl1Ajust(:,:,2)));
Cycl1ColorR=mean(mean(CropCycl1Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),1)));
Cycl1ColorG=mean(mean(CropCycl1Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),2)));
if (Cycl1ColorR/BackgroundR)> (Cycl1ColorG/BackgroundG)
color(k,1)='Red';
else if (Cycl1ColorR/BackgroundR)< (Cycl1ColorG/BackgroundG)
color(k,1)='Green';
else
color(k,1)='missing';
end
end
ColorMatrix(k,1)=color(k,1);
BackgroundR=mean(mean(CropCycl2Ajust(:,:,1))); BackgroundG=mean(mean(CropCycl2Ajust(:,:,2)));
Cycl2ColorR=mean(mean(CropCycl2Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),1)));
Cycl2ColorG=mean(mean(CropCycl2Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),2)));
if (Cycl2ColorR/BackgroundR) > (Cycl2ColorG/BackgroundG)
color(k,1)='Red';
else if (Cycl2ColorR/BackgroundR) < (Cycl2ColorG/BackgroundG)
color(k,1)='Green';
else
color(k,1)='missing';
end
end
ColorMatrix(k,2)=color(k,1);
BackgroundR=mean(mean(CropCycl3Ajust(:,:,1))); BackgroundG=mean(mean(CropCycl3Ajust(:,:,2)));
Cycl3ColorR=mean(mean(CropCycl3Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),1)));
Cycl3ColorG=mean(mean(CropCycl3Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),2)));
if (Cycl3ColorR/BackgroundR) > (Cycl3ColorG/BackgroundG)
color(k,1)='Red';
else if (Cycl3ColorR/BackgroundR) < (Cycl3ColorG/BackgroundG)
color(k,1)='Green';
else
color(k,1)='missing';
end
end
ColorMatrix(k,3)=color(k,1);
BackgroundR=mean(mean(CropCycl4Ajust(:,:,1))); BackgroundG=mean(mean(CropCycl4Ajust(:,:,2)));
Cycl4ColorR=mean(mean(CropCycl4Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),1)));
Cycl4ColorG=mean(mean(CropCycl4Ajust(round(tempcolor(1,1)-radius):round(tempcolor(1,1)+radius),round(tempcolor(1,2)-radius):round(tempcolor(1,2)+radius),2)));
if (Cycl4ColorR/BackgroundR) > (Cycl4ColorG/BackgroundG)
color(k,1)='Red';
else if (Cycl4ColorR/BackgroundR) < (Cycl4ColorG/BackgroundG)
color(k,1)='Green';
else
color(k,1)='missing';
end
end
ColorMatrix(k,4)=color(k,1);
end
ArrayNum=zeros(numberOfBlobs,2);
for i=1:numberOfBlobs
ArrayNum(i,:)=[Xblock,Yblock];
end
ArrayResult1=[ArrayNum, MedianIntensity, ColorMatrix];
ArrayResult=[ArrayResult;ArrayResult1];