i am working on graph cut image segmentation...iam getting an error in the code...
Show older comments
my error is ...function cannot be used in this context.
A='D:\matlab2012\work\1.jpg'; I=imread(A,'jpg'); pad=3; MAXVAL=255; function [Ncut] = graphcuts(I,pad,MAXVAL) % function [Ncut] = graphcuts(I) % Input: I image % pad: spatial connectivity; eg. 3 % MAXVAL: maximum image value % Output: Ncut: Binary map 0 or 1 corresponding to image segmentation I = double(I); [H,W] = size(I); % Find weights between nodes I1 and I2, w = exp(a*abs(I1-I2)); % Set a to have a weight of 0.01 for diff = MAXVAL a = log(0.01)/MAXVAL; x = [0:MAXVAL/100:MAXVAL]'; y = exp(a*x); figure;plot(x,y);xlabel('intensity diff');ylabel('weights'); title('weights') ws = 2*pad + 1; if(ws <= 3) ws = 3; end %Build the weight matrix disp('Building Weight Matrix'); close all; tic WM = zeros(H*W,H*W); countWM = 0; for kk = 1:W for jj = 1:H mask = logical(zeros(H,W)); cs = kk-pad; ce = kk+pad; rs = jj-pad; re = jj+pad; if(cs<1) cs = 1; end; if(ce>W) ce = W; end; if(rs<1) rs = 1; end; if(re>H) re = H; end; mask(rs:re,cs:ce) = 1; idx = find(mask==1); p = abs(I(idx) - I(jj,kk)); p = exp(a*p); countWM = countWM + 1; WM(countWM,idx) = p(:)'; end end ttime = toc; disp(sprintf('Time for generating weight matrix = %f',ttime)); clear countWM % Weight between a node and iteself is 0 for jj = 1:H*W WM(jj,jj) = 0; end; WM = sparse(WM); % Shi and Malik Algorithm: second smallest eigen vector disp('Finding Eigen Vector'); d = sum(WM,2); D = diag(d); tic B = (D-WM); B = (B+B')/2; OPTS.disp = 0; [v,d,flag] = eigs(B,D,2,'SA',OPTS); ttime = toc; disp(sprintf('Time for finding eigen vector = %f',ttime)); clear OPTS y = v(:,2); Ncut = reshape(y,H,W); Ncut = Ncut > 0;
Answers (1)
Image Analyst
on 19 Jan 2015
Read this then add a function declaration because you can't have a script and a function in the same m-file. If your m-file is called graph_cut.m, then put this as the first line in the file:
function graph_cut()
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!