Patent Document ID: 10132018
Application ID: 15613171
Patent Status: 1

Claim One:
1. A method of converting a photographic image into realistic and customized embroidery using software, the method comprising: a) computer software reading a photographic image and calculating the size of an embroidered product based on a frame size selected by a user; b) down-sampling or up-sampling said photographic image so that a single pixel of said photographic image has a predefined size of 0.6 mm, defined as density, resulting in a photographic image approximately 42.3 DPI; c) storing two copies of said image, one as a color image and one as a grayscale image; d) calculating for each pixel of the grayscale image partial derivatives dx and dy of said photographic image using a SOBEL operator; and from the two partial derivatives dx and dy, calculating a SOBEL angle, which is arctangent of two dy,dx and a magnitude, which is square root of dx square plus dy square, and storing them to a SOBEL table; e) selecting a number of colors to be used and then executing the color selection and reduction of the color image, using a median-cut algorithm; f) calculating a series of open polylines that connect same-color pixels by: i. starting from a first unused pixel adjacent a lowest left corner of the photographic image and marking it as a used PIXEL; ii. reading the SOBEL angle of the used PIXEL from the SOBEL table; iii. finding a second unused pixel near the used PIXEL of like color, choosing the PIXEL towards the SOBEL angle, marking it as used and adding it as a point to the polyline; iv. repeating step ii until all pixels having a maximum of 3 pixels distance are gathered, resulting in a stored polyline that is of like color as the pixels from which the polyline was generated; v. starting a new polyline until all pixels are used; g) minimizing the number of polylines to a manageable size by: i. joining two separate polylines of the same color (p1, p2) into one polyline at a point where they are less than 2.5 mm apart; ii. joining a polyline of less than 7 points to any polyline of the same color, such that the color of the resulting polyline remains the color of the largest of the two joined polylines; iii. discarding polylines with fewer than two points; iv. grouping the polylines by color and arranging the color polyline groups from dark to light if a base fabric color is dark, and from light to dark if the base fabric color is light, such that the color polyline groups are put into one sequence; v. determining if pairs of polylines with the same color; determining if there is any path that passes underneath pixels that will be covered later in the sequence; joining the two polylines at such path; and joining the polylines at the shortest path where more than one path has the same color; and h) generating the embroidery using an embroidery machine by: i. multiplying the coordinates of all points of the polylines by the Density on output, such that the resulting stitch data is in physical units; ii. outputting for each of the polylines the first point of the polyline to an embroidery machine; iii. executing the following steps for all other points of the polyline: a. reading the SOBEL Angle and a magnitude of the point from the SOBEL table; b. outputting the point if the magnitude is less than 0.0001; c. moving the point to a pre-defined distance to approximately 2.0 mm, perpendicular to the SOBEL angle defined in the SOBEL table; adding 90 degrees to the SOBEL angle for odd points, and subtracting 90 degrees from the SOBEL angle for even points to calculate the resulting perpendicular angle; d. outputting the point to the embroidery machine; and iv. appending embroidery commands to the embroidery machine by: a. signaling an end of a command list to the embroidery machine if the polyline is the last; b. instructing the embroidery machine to cut a thread if the following polyline has the same color; and c. instructing the embroidery machine to change a thread color if the following polyline has a different color.