На полпути, отвечая на этот старый вопрос, просто чтобы посмотреть, хочет ли кто-нибудь попробовать:
l = Import@"http://i.stack.imgur.com/R3xte.jpg";
l1 = Binarize[GradientFilter[MeanShiftFilter[l, 3, .01, MaxIterations -> 10], 3]
// ImageAdjust, .1];
l2 = Erosion[Dilation[l1, 20], 20];
l3 = ImageData@ColorNegate@l2;
n = 1; While[l3[[1 ;; n, 1 ;; n]] == Array[1 &, {n, n}], n++];
ip = ImagePartition[l, n][[1, 1]];
ipMsft = MeanShiftFilter[ip, 3, .1, MaxIterations -> 100];
l8 = ColorNegate@GradientFilter[ ImageMultiply[ip, ipMsft], 6] // ImageAdjust;
ImageSubtract[l8, GradientFilter[l8, 1]]