i am working on graph cut image segmentation...iam getting an error in the code...
1 次查看(过去 30 天)
显示 更早的评论
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;
0 个评论
回答(1 个)
Image Analyst
2015-1-19
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()
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!