Skip to content
Snippets Groups Projects
Commit f6d281d9 authored by Andrew Cohen's avatar Andrew Cohen
Browse files

initial repository for open source

parents
Branches
No related tags found
No related merge requests found
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
*.asv
File added
%--------------------------------------------------------------------------
% convolve_image.m
% main script for evaluating SWF for RPE cobblestone morphology
% (c) 2015-2016 Andrew R. Cohen and Rohini Joshi
%
% license - for review evaluation only
% THIS IS UNRELEASED CODE - VIEWING AND DOWNLOAD ONLY BY MANUSCRIPT REVIEWERS
% the software will be released under the GPL concurrent with publication
%
% This is the source code for the paper:
% R. Joshi, M. Winter, J. S. Saini, T. A. Blenkinsop, J. H. Stern, S. Temple and
% A. R. Cohen, "Automated measurement of cobblestone morphology for
% characterizing Stem cell-Derived Retinal Pigment Epithelial cell cultures".
% EXCEPTION: as described in the paper, the source code for the steerable
% wavelet filters must be downloaded separately from http://bigwww.epfl.ch/demo/circular-wavelets.
% All use of that component is governed by the license agreement described there.
%
% Andrew Cohen
% acohen@coe.drexel.edu
% http://bioimage.coe.drexel.ed
%
%--------------------------------------------------------------------------
%% Initialization
clc;
% close all;
clear;
addpath U
addpath Wavelet
addpath Wavelet/Radial
tic;
fname = '..\Images\Temple\RPE\ZOI\Category 5\Category 5 ZO-1 32X C.jpg';
img = rgb2gray(imread(fname));
htype = 'Simoncelli'; % isotropic wavelet type (string), one of 'Simoncelli', 'Meyer', 'Papadakis' or 'Shannon'
Utype = 'Prolate'; %steerable construction type (string). Available constructions are
% 'Gradient', 'Monogenic', 'Hessian', 'CircularHarmonic',
% 'Prolate', 'ProlateUniSided', 'Slepian', 'RieszEven',
% 'RieszOdd', 'RieszComplete', 'SimoncelliEven', 'SimoncelliOdd',
% 'SimoncelliComplete', 'UserDefined'.
Uparams.harmonics = 0:3:27; % -4:2:4; % For 'RieszEven', 'RieszOdd', 'RieszComplete', 'SimoncelliEven', 'SimoncelliOdd',
%'SimoncelliComplete' - wavelet order
Uparams.B = .1; % For 'Slepian' - bandwidth
num_scales = 4; % number of scales
steerangle = pi/3; % angle by which to steer the wavelet (optional, defaults to 0)
Mequiangular = 9; % number of equiangular channels
% init wavelet transform
[hafun,hdfun,hfun,U,harmonics] = Init(htype,Utype,Uparams);
%% Preprocessing
% img = img(350:849, 500:999);
img_raw = img;
% junct = img(230:279, 450:499);
% img = img(1:399, 100:499);
% figure;imagesc(img_raw);colormap gray;
% img = mat2gray(stdfilt(imadjust(img), getnhood(strel('disk',3))));
% Michel contrast enhancement
h=fspecial('gaussian', 7,20);
smooth = imfilter(img,h);
sub=img-smooth;
out=medfilt2(sub, [3 3]);
figure, imagesc(out);colormap gray
img=out;
%% Convolving
[m n] = size(img);
% response = [];
response = zeros([50 50 13]);
loc = rpe_morph(img_raw);
for t=1:13
psi = psiWav(hfun, U(9,:), harmonics, 0.7, 1, 25, t, 0, 0);
abs_psi{t} = abs(psi);
end
for i=1:m-50
for j=1:n-50
if loc(i+26,j+26)
for t=1:13
temp = img(i:i+50-1,j:j+50-1);
response(i,j,t) = sum(sum(double(temp).*abs_psi{t}));
end
else
response(i,j,:) = 0;
continue;
end
end
end
toc
%%
r = max(response, [], 3);
r = mat2gray(r);
for i=1:15:size(r,1)-15
for j=1:15:size(r,2)-15
sub = r(i:i+14,j:j+14);
r_max(i:i+14,j:j+14) = zeros(15);
[ii jj] = find(sub == max(sub(:)));
r_max(i+ii,j+jj) = max(sub(:));
end
end
rr=zeros(size(r));
rr(1:size(r_max,1),1:size(r_max,2)) = r_max;
r=rr;
[peaks locn] = sort(r(:),'descend');
[I,J] = ind2sub(size(r),locn);
[I J] = find(r>0.3*max(r(:)));
% [I J] = find(r);
r_plot = zeros(size(r));
r_plot(I,J) = r(I,J);
% img_marked(:,:,1:3) = cat(3,img_raw,img_raw,img_raw);
% img_marked(26:size(img_raw,1)-25,:,1) = r_plot;
% img_marked(26:size(img_raw,1)-25,26:size(img_raw,2)-25,1) = r_plot;
figure;
imagesc(img_raw);colormap gray;
axis image
set(gca, 'xtick', [], 'ytick', []);
hold on;
% plot(J(1:end)+26, I(1:end)+26, '+b','markersize',8,'linewidth',3);
% plot([26,26,m-25,m-25],[26,m-25,26,m-25],'+r');
display(['Number of junctions = ' num2str(length(I))]);
r_255 = floor(r*255);
cmap = jet(256);
% figure;
% Find cmap index
for c =1:length(I)
c_ind(c,:) = cmap(r_255(I(c),J(c))+1,:);
plot(J(c)+26, I(c)+26, 'h','markerfacecolor', c_ind(c,:),'markersize',7, 'markeredgecolor', 'none');
hold on;
end
% colorbar
% r=r_max;
% [peaks locn] = sort(r(:),'descend');
% [I,J] = ind2sub(size(r),locn);
% [I J] = find(r>0.35*max(r(:)));
% % [I J] = find(r);
% figure, imagesc(img_raw);colormap gray;
% axis image
% set(gca, 'xtick', [], 'ytick', []);
% hold on;
% plot(J(1:end)+26, I(1:end)+26, '+b','markersize',8,'linewidth',3);
% % plot([26,26,m-25,m-25],[26,m-25,26,m-25],'+r');
% display(['Number of junctions = ' num2str(length(I))]);
%--------------------------------------------------------------------------
% im_thin_clean_br
% pre-processing helper function
% (c) 2015-2016 Andrew R. Cohen and Rohini Joshi
%
% license - for review evaluation only
% THIS IS UNRELEASED CODE - VIEWING AND DOWNLOAD ONLY BY MANUSCRIPT REVIEWERS
% the software will be released under the GPL concurrent with publication
%
% This is the source code for the paper:
% R. Joshi, M. Winter, J. S. Saini, T. A. Blenkinsop, J. H. Stern, S. Temple and
% A. R. Cohen, "Automated measurement of cobblestone morphology for
% characterizing Stem cell-Derived Retinal Pigment Epithelial cell cultures".
% EXCEPTION: as described in the paper, the source code for the steerable
% wavelet filters must be downloaded separately from http://bigwww.epfl.ch/demo/circular-wavelets.
% All use of that component is governed by the license agreement described there.
%
% Andrew Cohen
% acohen@coe.drexel.edu
% http://bioimage.coe.drexel.ed
%
%--------------------------------------------------------------------------
% img = imread('..\images\ZOI\Category 5\Category 5 ZO-1 20X B.JPG');
function im_thin_clean_br = rpe_morph(img)
level = graythresh(img);
img_bw = im2bw(img, level);
im_skel = bwmorph(img_bw, 'skel', Inf);
im_thin = bwmorph(img_bw, 'thin', Inf);
im_thin_clean = bwmorph(im_thin, 'clean');
im_thin_clean_br = bwmorph(im_thin_clean,'branchpoints');
imr = bwmorph(im_thin_clean,'endpoints');
im_thin_clean_br = im_thin_clean_br | imr;
loc = (bwmorph(im_thin_clean_br, 'thicken', 3));
img_marked(:,:,1) = 127*im_thin_clean + 127*loc;
img_marked(:,:,2) = 127*im_thin_clean + 127*loc;
img_marked(:,:,3) = 127*im_thin_clean;
figure,imshow(img_marked);
imwrite(img_marked, 'PossibleJunctionPoints.tif', 'tif');
\ No newline at end of file
This is the source code for the paper:
R. Joshi, M. Winter, J. S. Saini, T. A. Blenkinsop, J. H. Stern, S. Temple and A. R. Cohen, "Automated measurement of cobblestone morphology for characterizing Stem cell-Derived Retinal Pigment Epithelial cell cultures".
The paper is currently under review. This source code is not intended for download or use except by the designated reviewers. As soon as the manuscript is accepted, all code will be published under the GPL, version 2.
EXCEPTION: as described in the paper, the source code for the steerable wavelet filters must be downloaded separately from http://bigwww.epfl.ch/demo/circular-wavelets. All use of that component is governed by the license agreement described there.
Andrew Cohen
acohen@coe.drexel.edu
http://bioimage.coe.drexel.edu
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment