Hi, I have curve fitted an histogram using the gaussian function. Now I would like to know how to extract a series of cell diameters from the gaussian fit.

조회 수: 4 (최근 30일)
Histogram with curve fit (x = cell diamters y = frequency)
  댓글 수: 3
Akshay Kumar Pakala
Akshay Kumar Pakala 2021년 10월 29일
please let me know if you want me to add more comments to the code.
Also, I would like to know, how to create random 3d points based on my gaussian fit?

댓글을 달려면 로그인하십시오.

채택된 답변

yanqi liu
yanqi liu 2021년 11월 1일
편집: yanqi liu 2021년 11월 2일
sir,please check the follow code to get some information
clc; clear all; close all;
BW = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/783383/image.png');
[nr,nc,layers] = size(BW);
%% converting the image to 2d so the image can be labledd %%
if layers>1
BW = BW(:,:,1);
end
% end of lablling %%%%%%%%%%%%%%%%%
binaryimage = BW < 128;
bw = logical(binaryimage);
imwrite(bw, 'imagetoapp.jpg');
%% lablelling the image %%%%%%
[labeledimage, numberofblobs] = bwlabel(binaryimage,8);
props = regionprops(labeledimage, 'Equivdiameter');
x = numel(props);
y = zeros(x,1);
for i = 1:1:length(props)
y(i,1) = struct2array(props(i,1));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LAbled image to rgb
colouredimage = label2rgb(labeledimage,'jet', [0,0,0.5]);
coloredLabelsImage = label2rgb (labeledimage, 'jet', 'k', 'shuffle');
imshowpair(labeledimage,colouredimage,'montage')
hold on
%% generating histogram and curve fitting it using gaussian function%%%%%%%%%
figure()
y1 = histogram(y,45);
values = y1.Values;
a=y1.BinEdges;
for i = 1 : length(a)-1
b(i) = mean(a(i:i+1));
end
[barheights, position] = hist(y,45);
positiontranspose = position';
valuestranspose = values';
gauss = 'd + a*exp(-(1/2)*((x-b)/c)^2)'
gauss = 'd + a*exp(-(1/2)*((x-b)/c)^2)'
startpoints = [40 20 10 0.5];
myfit = fit(positiontranspose,valuestranspose,gauss,'start',startpoints);
hold on
plot(myfit)
z(:,1) = myfit(x);
zt=myfit(b);
%% plot properties
xlabel('cell diamters')
ylabel('frequency')
hold on; plot(b, zt, 'r*')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
  댓글 수: 5
Akshay Kumar Pakala
Akshay Kumar Pakala 2021년 11월 2일
Hey Yanqui Liu
I did not understand what you meant by that. Can you please explain?
Thank you

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

yanqi liu
yanqi liu 2021년 10월 29일
sir, may be upload the data mat file or the figure file to analysis
  댓글 수: 1
Akshay Kumar Pakala
Akshay Kumar Pakala 2021년 10월 29일
please let me know if you want me to add more comments to the code.
Also, I would like to know, how to create random 3d points based on my gaussian fit?

댓글을 달려면 로그인하십시오.


Akshay Kumar Pakala
Akshay Kumar Pakala 2021년 10월 29일
편집: Walter Roberson 2021년 11월 1일
clc
clear all
BW = imread('binary.PNG');
[nr,nc,layers] = size(BW);
%% converting the image to 2d so the image can be labledd %%
if layers>1
BW = BW(:,:,1);
end
% end of lablling %%%%%%%%%%%%%%%%%
binaryimage = BW < 128;
bw = logical(binaryimage);
imwrite(bw, 'imagetoapp.jpg');
%% lablelling the image %%%%%%
[labeledimage, numberofblobs] = bwlabel(binaryimage,8);
props = regionprops(labeledimage, 'Equivdiameter');
x = numel(props);
y = zeros(x,1);
for i = 1:1:length(props)
y(i,1) = struct2array(props(i,1));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LAbled image to rgb
colouredimage = label2rgb(labeledimage,'jet', [0,0,0.5]);
coloredLabelsImage = label2rgb (labeledimage, 'jet', 'k', 'shuffle');
imshowpair(labeledimage,colouredimage,'montage')
hold on
%% generating histogram and curve fitting it using gaussian function%%%%%%%%%
figure()
y1 = histogram(y,45);
values = y1.Values;
[barheights, position] = hist(y,45);
positiontranspose = position';
valuestranspose = values';
gauss = 'd + a*exp(-(1/2)*((x-b)/c)^2)'
startpoints = [40 20 10 0.5];
myfit = fit(positiontranspose,valuestranspose,gauss,'start',startpoints);
hold on
plot(myfit)
z(:,1) = myfit(x);
%% plot properties
xlabel('cell diamters')
ylabel('frequency')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by