필터 지우기
필터 지우기

i am working on graph cut image segmentation...iam getting an error in the code...

조회 수: 1 (최근 30일)
shamili
shamili 2015년 1월 19일
답변: Image Analyst 2015년 1월 19일
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;

답변 (1개)

Image Analyst
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()

카테고리

Help CenterFile Exchange에서 Image Processing and Computer Vision에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by