Question: Region Counting: Write a program to binarize a gray-level image based on the assumption that the image has a bimodal histogram. You are to implement

Region Counting:

Write a program to binarize a gray-level image based on the assumption that the image has a bimodal histogram. You are to implement the Otsu's thresholding method to estimate the optimal threshold required to binarize the image. Compute Intra-class variance using various thresholds and choose the one that minimizes this value. Your code should report both the binarized image and the optimal threshold value. Also assume that foreground objects are darker than background objects in the input gray-level image.

  • Starter code available in directory region_analysis/
  • region_analysis/binary_image.py:
    • compute_histogram: write your code to compute the histogram in this function, If you return a list it will automatically save the graph in output folder
    • find_otsu_threshold: Write your code to compute the optimal threshold using Otsu's method.
    • binarize: write your code to threshold the input image to create a binary image here. This function should return a binary image which will automatically be saved in output folder. For visualization one can use intensity value of 255 instead of 0 in the binay image and and 0 instead of 1 in binay images. That way the objects appear black over white background

class BinaryImage: def __init__(self): pass

def compute_histogram(self, image): """Computes the histogram of the input image takes as input: image: a grey scale image returns a histogram as a list"""

hist = [0]*256

return hist

def find_otsu_threshold(self, hist): """analyses a histogram to find the otsu's threshold assuming that the input histogram is bimodal. takes as input hist: a histogram returns: an optimal threshold value (otsu's threshold)"""

threshold = 0

return threshold

def binarize(self, image): """Comptues the binary image of the the input image based on histogram analysis and thresholding Make calls to the compute_histogram and find_otsu_threshold methods as needed. take as input image: an grey scale image returns: a binary image"""

bin_img = image.copy()

return bin_img

Do not use any in-built functions from opencv and numpy. In general, you can use function from math library. Functions allowed for this part are: np.array(), np.matrix(), np.zeros(), np.ones(), cv2.imread(), cv2.namedWindow(), cv2.waitKey().

  • image is provided for testing: cells.pngRegion Counting: Write a program to binarize a gray-level image based on

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!