I am trying to figure out an efficient way of implementing image dilation and erosion for binary images. As far as I understand it, the naive way would be:
- loop through the image
- if pixel is 1
- loop through the neighborhood based on the structuring element's height and width
- (dilate) substitute each pixel of the image with the value in the corresponding location of the SE
- (erode) check if all neighborhood is equal to the SE, if so keep all the pixels, else delete the centre
so this means that for each pixel I have to loop through the SE as well making this a O(NMW*H).
Is there a more elegant way of doing this?