유사 연산자 엣지 검출
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
/*
@author : sin.hyunsung (nanamare.tistory.com)
@content 차분연산을 통한 엣지 검출 중 유사연산자 엣지 검출
*/
void homogenOp(Mat img, Mat& dst, int mask_size) {
dst = Mat(img.size(), CV_8U, Scalar(0));
Point h_m(mask_size / 2, mask_size / 2);
for (int i = h_m.y; i < img.rows - h_m.y; i++) { //행증가
for (int j = h_m.x; j < img.cols - h_m.x; j++) { //열증가
float max = 0; //최대출력화소 변수
for (int u = 0; u < mask_size; u++) {
for (int v = 0; v < mask_size; v++) {
int y = i + u - h_m.y;
int x = j + v - h_m.x;
float difference = abs(img.at<uchar>(i, j) - img.at<uchar>(y, x));
if (difference > max) max = difference;
}
}
dst.at<uchar>(i, j) = max;
}
}
}
void main() {
Mat image = imread("../image/test.jpg", 0);
Mat edge;
homogenOp(image, edge, 3);
imshow("image", image);
imshow("edge_homogenOp", edge);
waitKey(0);
}