No, I can post it here, my notebooks are a mess anyway wink.
1st one
Code:
normalize[mat_] := mat/Total[Total[mat]];
deconv[i0_, k_, n_, count_] := 
 Module[{i = i0}, 
  Do[i = ImageAdd[i0, 
     ImageConvolve[i, 
      normalize[BoxMatrix[0, 2*n + 1]] - normalize[k[n]]]], {count}];
  i
  ];
source = Import["ExampleData/lena.tif"];
g0 = ImageConvolve[source, normalize[BoxMatrix[1]]]
deconv[g0, BoxMatrix, 1, 10]



2nd one
Code:
size = 128;
imagesize = size*2 + 1;
total[mat_] := Total[Total[mat]];
normalize[mat_] := mat/total[mat];

(* load data, make ft, inverse ft *)
image = ImageResize[ExampleData[{"TestImage", "Lena"}], imagesize]
data = ImageData[image];
col = First[ImageDimensions[image]]
row = Last[ImageDimensions[image]]
px = col*row;
f = Partition[Take[Flatten[data], {2, px*3, 3}], col];
fourier = Fourier[f, FourierParameters -> {0, 1}];
intensity = total[f];
Image[Abs[
  RotateRight[fourier, {IntegerPart[row/2], IntegerPart[col/2]}]]]
Image[Abs[InverseFourier[fourier]]]

(* load convolution kernel in fs *)
blurfunction = 
  RotateRight[
   Transpose[RotateRight[GaussianMatrix[{size, 30}], size]], size];
ListPlot3D[blurfunction, PlotRange -> All]

(*blur image, comparison with original*)
resetIntensity[mat_] := normalize[mat]*intensity;
blurred = fourier*blurfunction;
blurredImage = Image[resetIntensity[
   Abs[InverseFourier[blurred]]
   ]]

(*undo blur*)
reconstructed = blurred/blurfunction;
Image[resetIntensity[
  Abs[InverseFourier[reconstructed]]
  ]]


I hope the code works. It relies quite a bit on the mathematica stuff but it should be no problem to do it in another language.