开发者

Objective C - Detect a "path" drawing, inside a map image

开发者 https://www.devze.com 2023-03-16 19:49 出处:网络
I have a physical map (real world), for example, a little town map. A \"path\" line is painted over the map, think about it like \"you are here. here\'s how to reach the train station\" :)

I have a physical map (real world), for example, a little town map. A "path" line is painted over the map, think about it like "you are here. here's how to reach the train station" :) Now, let's suppose I can get an image of that sce开发者_运维技巧nario (likewise, coming from a photo). An image that looks like:

Objective C - Detect a "path" drawing, inside a map image

My goal is not easy way out!

I want to GET the path OUT of the image, i.e., separate the two layers.

Is there a way to extract those red marks from the image?

Maybe using CoreGraphics? Maybe an external library? It's not an objective C specific question, but I am working on Apple iOS.

I already worked with something similar, the face-recognition. Now the answer I expect is: "What do you mean by PATH?" Well, I really don't know, maybe a line (see above image) of a completely different color from the 'major' colors in the background. Let's talk about it.


If you can use OpenCV then it becomes simpler. Here's a general method:

  1. Separate the image into Hue, Saturation and Variation (HSV colorspace)

    Here's the OpenCV code:

    // Compute HSV image and separate into colors IplImage* hsv = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 3 );

    cvCvtColor( img, hsv, CV_BGR2HSV );

    IplImage* h_plane = cvCreateImage( cvGetSize( img ), 8, 1 );

    IplImage* s_plane = cvCreateImage( cvGetSize( img ), 8, 1 );

    IplImage* v_plane = cvCreateImage( cvGetSize( img ), 8, 1 );

    cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 );

  2. Deal with the Hue (h_plane) image only as it gives just the hue without any change in value for a lighter or darker shade of the same color

  3. Check which pixels have Red hue (i think red is 0 degree for HSV, but please check the OpenCV values)

  4. Copy these pixels into a separate image

I's strongly suggest using the OpenCV library if possible, which is basically made for such tasks.


You could filter the color, define a threshold for what the color red is, then filter everything else to alpha, and you have left over what your "path" is?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号