Update July 14: Fixed Centering of Positions
Here is a summary of the code:
image = Graphics[{ Thickness[0.03] , CapForm["Round"] , Line[Table[ theta/(2 Pi) {Cos[theta], Sin[theta]} , {theta, 0, 20 Pi, 20 Pi/599} ]] , RGBColor[1., 0., 0.], AbsolutePointSize[1], Point[{0, 0}] } , ImageSize -> {100, 100} ] centralPosition = Position[ImageData @ image, {1., 0., 0.}]; array = ReplacePart[1 - MorphologicalComponents@image, First@centralPosition -> 1]; positions = ComponentMeasurements[array, "Mask"][[1, 2]]["NonzeroPositions"]; shiftedPositions = # - First@centralPosition & /@ positions;
To make it so that the image spirals out from the actual origin, I placed a red pixel right at the center of the image. We then use ImageData, which returns an array of color data for each pixel. We find the Position of the red pixel, add this point back into the array, and shift the positions by the position of the red pixel. As shown in the third figure below, this makes it so that the origin is at the center of the spiral.
Again: you can change the ImageSize to be whatever you wish. Increasing it yields better resolution. In addition, increasing the number of points in the Table that defines the spiral might help. Finally, I have used Thickness[0.03] so that the thickness of the spiral is always 3% of the figure size.
Generating the images below. The first image is just image. The third and fourth images are, respectively,
MatrixPlot[array, ImageSize -> 250] MatrixPlot[1 - array, ImageSize -> 250]
Finally, to generate the second figure, we have to get the positions of both the spiral and the negative of the spiral and assign to the positions the values 1 or 0 depending on whether they're in the spiral or not. To get the negative:
inversePositions = ComponentMeasurements[1 - array, "Mask"][[1, 2]]["NonzeroPositions"]; shiftedInversePositions = # - First@centralPosition & /@ inversePositions;
Finally, to get the list of coordinates with values, we do
finalArray = Join[ Flatten@{#, 1} & /@ shiftedPositions , Flatten@{#, 0} & /@ shiftedInversePositions ];
and to plot it, we do
ListDensityPlot[finalArray , InterpolationOrder -> 0 , Axes -> True , ImageSize -> 250]
This last takes a little bit of time, and will take longer and longer the bigger the original image, so be careful.

Original Post
Here's how I would go about doing drawing the spirals.
image = Graphics[{ AbsoluteThickness[10] , CapForm["Round"] , Line[Table[ theta/(2 Pi) {Cos[theta], Sin[theta]} , {theta, 0, 20 Pi, 20 Pi/599} ]] } ,ImageSize -> {500, 500} ]
Changing the argument of AbsoluteThickness[20] allows you to get different thicknesses. Changing the number of points in the Line makes it look nicer as well. The "Round" Capform makes the ends of the Line look nice. This particular code results in

(Update: there was an error in the original post. Image Size should be ImageSize, and since this was wrong, it used the default width of 360 instead.) We set the ImageSize in order to determine how many points there are in the image. For instance, taking ImageSize -> {500, 400} makes the grid have a width of 500 points and a height of 400 points. You can change this to, say, 1000 by 1000, but you will need to change the AbsoluteThickness argument, because the thickness won't scale with the size of the image. If you want it to, you can use Thickness instead, and the argument will be the fraction of the image width that the line takes up.
Now, to get the $(x,y)$ components, we can first call MorphologicalComponents on the image to get a matrix of 1's where there is black and 0's where there is white as
array = 1 - MorphologicalComponents @ image;
Finally, we extract the positions via
positions = ComponentMeasurements[array, "Mask"][[1, 2]]["NonzeroPositions"];
ComponentMeasurements[array, "Mask"][[1, 2]] returns a SparseArray object, and we use the SparseArray method "NonzeroPositions" to extract the positions at which the image array is non-zero, which is where the original image is black.
If we plot array using
MatrixPlot[array]
we get the figure below, and the coordinates of the orange positions are in the list positions.
Update If you need to shift the positions so that the original center of the spiral is at the origin, do the following. If your grid is 500 by 400, say, then do:
shiftedPositions = {-501/2, -401/2} + # & /@ positions;
This takes the shift {-501/2,-401/2} and adds it to every element in the list by constructing the pure function {-501/2, -401/2} + # & and Maping it (shorthand: /@) over the list positions, which applies the pure function to every element of the list.

PolarPlot[theta/2 Pi, {theta, 0, 2 Pi}, PlotStyle -> {AbsoluteThickness[8], CapForm["Round"]}, Axes -> None] // Binarize // ImageData // MatrixPlot? by setting large ImageSize you can increase the resolution. you can also usePosition[imagedata,1]andImageValuePositions[im,1]for coordinates $\endgroup$