Revision: 69518
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 7, 2015 07:00 by engrhassan2k13
Initial Code
%read image img1 = rgb2gray(imread('dino.jpg'));%use your image here imshow(img1); %parameter initialization for EM-Algo temp =[]; phi1 = 0.5; phi2 = 0.5; u1 = 0; u2 = 50; sig1 = 2; sig2 = 3; tempimg1 = reshape(img1,1,numel(img1)); tempimg1 = double(tempimg1); img = double (img1); for k = 1 : 3 for i = 1 : numel(img1) %Expectation Step prob1 = -0.9181-reallog(sig1)-( (( img(i)- u1 )^2)/(2*(sig1^2)) ); prob2 = -0.9181-reallog(sig2)-( (( img(i)- u2 )^2)/(2*(sig2^2)) ); probc1 = ( prob1*phi1 ) / ( (prob1*phi1)+ (prob2*phi2) ); probc2 = ( prob2*phi2 )/( (prob1*phi1) + (prob2*phi2) ); temp = [temp ; probc1 probc2]; end %Maximization Step phi1 = ( sum(temp(:,1)) )*(1/numel(img)); phi2 = (sum(temp(:,2)))*(1/numel(img)); u1 = ( sum((temp(:,1)').*tempimg1) )/( sum(temp(:,1)) ); u2 = ( sum((temp(:,2)').*tempimg1) )/( sum(temp(:,2)) ); var1 = ( sum( ( (tempimg1 - u1).^2 ).*( temp(:,1)' ) ) ) / ( sum(temp(:,1)) ); sig1 = sqrt(var1); var2 = ( sum( ( (tempimg1 - u2).^2 ).*( temp(:,2)' ) ) ) / ( sum(temp(:,2)) ); sig2 = sqrt(var2); temp = []; end %Thresholding thresh = ((u2 + u1)/2); for m = 1 : numel(img1) if img1(m) > thresh img1(m) = 255; else img1(m) = 0; end end figure; imshow(img1);
Initial URL
Initial Description
This code uses the Expectation Maximization algorithm for automatically thresholding an image.
Initial Title
Automatic Thresholding with Expectation Maximization Algorithm in Matlab
Initial Tags
Initial Language
MatLab