Applies a morphological filter on an image
img_out = morphologyEx(img_in, op, element[, anchor[, iterations[, borderType[, borderValue]]]])
Input image (Mat).
Type of morphological operation:
Structuring element used for filtering (double matrix or Mat) (default 3x3 matrix).
Position of the anchor in the element (double 1x2 matrix) (default the anchor is at the element center).
number of times dilation/erosion is applied (double).
Pixel extrapolation method (double) (default BORDER_DEFAULT
).
Border value (double matrix 1xn n=1..4).
Output image (Mat).
morphologyEx
performs a specified morphological filter on the image.:
The available morphological filters can be summarized like this:
open(img) = dilate(erode(img))
.close(img) = erode(dilate(img))
.gradient(img) = dilate(img) - erode(img)
.top_hat(img) = img - open(image)
.black_hat = close(img) - img
.scicv_Init(); // Remove noise with an opening filter img = imread(getSampleImage("noise.png"), CV_LOAD_IMAGE_GRAYSCALE); subplot(1,2,1); matplot(img); // convert to black/white and reverse, image information is white pixels (value 1) but we want to filter black pixels (value 0) [res, img_bw] = threshold(img, 128, 255, THRESH_BINARY_INV); element = getStructuringElement(MORPH_RECT, [5 5]); img_open = morphologyEx(img_bw, MORPH_OPEN, element); // we need to reverse again before display img_open_reverse = bitwise_not(img_open); subplot(1,2,2); matplot(img_open_reverse); delete_Mat(img); delete_Mat(img_bw); delete_Mat(element); delete_Mat(img_open); delete_Mat(img_open_reverse); | ![]() | ![]() |