I don't have a reference to test against, but just looking around it seems right. I'm assuming that the goal is to literally treat it as additive noise as one would do with Gaussian noise. I'm not familiar with the application, so this is my assumption.
inpict = imread('cameraman.tif');
noise = v/sqrt(2) + sg*randn([prod(sz) 2]);
noise = sqrt(sum(noise.^2,2));
noise = reshape(noise,sz);
outpict = im2double(inpict) + noise;
EDIT: It does seem to check fine against randraw('rice',...), so I'm going to assume it's correct.
EDIT AGAIN: According to this, I'm wrong. The noise isn't additive. The signal is the distance vector V. So then we have this: inpict = imread('cameraman.tif');
noise = sg*randn([prod(sz) 2]);
noise(:,1) = noise(:,1) + im2double(inpict(:));
noise = sqrt(sum(noise.^2,2));
outpict = reshape(noise,sz);