I am trying to use the ChanVese model to pick out a 3D image of data that does not have a sharp edge. In fact, the brightness value per 3D pixel just gradually increases toward the center of the image. ChanVese is supposed to be able to do this per the reference, but I have not had success. Any advice?
I have been trying to relate the smooth_weight and image_weight parameters to the parameters in the reference (u,v,lambda1,lambda2). The image_weight seems to correspond to the lamdas (where lamda1 = lamda2). In the reference by Chan & Vese typically a value of one is used, but matlab crashes with a standard exception error when I put in a value any greater than 0.01.
great code. I have one suggestion though: In your CV reinit process, you implemented a very efficient distance transform. However, for performance reasons, you don't compute the values for the edges of the matrix (always 0). Thus I would suggest, you pad the input matrix with 0s and then un-pad the output matrix of this step:
u0 = y_binary_boundary_detection(uint8(u>0));
u0 = padarray(u0, [1 1 1]); % padding
u0 = ac_distance_transform_3d(u0);
u0 = u0(2:end-1, 2:end-1, 2:end-1); % un-padding
u = u0.*sign(u);