This script can be used to create a "spoke pattern" image in the style of the ones featured in the following paper:
Downing K.H., Glaeser R.M., Restoration of weak phase-contrast images recorded with a high degree of defocus: The "twin image" problem associated with CTF correction, Ultramicroscopy 108 (2008), 921-928
All tweakable parameters are defined in the first lines of the script, which can be edited before the script is executed. The script generates the image, opens a viewer to show it and saves it in the current folder with the name specified by the user.
Usage:
dng spoke_pattern.py <output image>
1import math
2import sys
4
5
6wedge_start = 20
7wedge_end = 500
8number_of_bands = 11
9size_of_image_x = 500
10size_of_image_y = 500
11pixel_sampling = 1.0 * Units.A
12threshold = 2.0 * Units.A
13amplitude = 255
14
15
16image=img.CreateImage(img.Size(size_of_image_x,size_of_image_y))
17image.CenterSpatialOrigin()
18image.SetSpatialSampling(pixel_sampling)
19
20
21image_extent=image.GetExtent()
22start_y=image_extent.GetStart()[1]
23end_y=image_extent.GetEnd()[1]
24start_x=image_extent.GetStart()[0]
25end_x=image_extent.GetEnd()[0]
26
27
28for y in range (start_y,end_y+1):
29 wedge_width=wedge_start+(y-start_y)*(wedge_end-wedge_start)/(end_y-start_y)
30 for x in range (start_x,end_x+1):
31 half_wedge=wedge_width/2.0
32 outer_bands=(number_of_bands-1)/2
33 factor=(0.5+outer_bands)*math.pi/half_wedge
34 if float(x)>-half_wedge and float(x)<half_wedge:
35 value=255*math.cos(float(x)*factor)
36 image.SetReal(img.Point(x,y),value)
37
38
40image.ApplyIP(filter)
41
42
43v=gui.CreateDataViewer(image,"Modulated Image")
Gaussian Low Pass Filter.