That's a nice Saffman-Taylor instability you got there ;)
Glenn is right, you'll probably want to do some filtering before you try detecting edges (gradients tend to be very sensitive to noise). Since you're detecting edges, you'll want to try an edge-preserving denoising filter. Here are some examples:
http://scikit-image.org/docs/dev/auto_examples/plot_denoise.html
Below is a quick attempt at filtering your image:
from skimage import io
from skimage import color
from skimage import filter
import matplotlib.pyplot as plt
image = color.rgb2gray(io.imread('4g1te.png'))
denoised = filter.denoise_tv_bregman(image, 1)
edges = filter.canny(denoised, 1, 0.01, 0.1)
fig, axes = plt.subplots(ncols=2)
axes[0].imshow(denoised)
axes[1].imshow(edges)
for ax in axes:
ax.set_axis_off()
plt.show()
You'll need to play around quite a bit to get this right. I'd also try filtering out small line-segments from the edge image; maybe, some geometrical properties would be helpful with that:
http://scikit-image.org/docs/dev/auto_examples/plot_regionprops.html
Good luck!