Exemplo n.º 1
0
def minProcess(image, view=False):
    """MinProcess using filter only shape [3,3]
       Using the minimal value of neighborhood as the filting result

        Args:
            image:  The original image
            view:   The flag to decided to show the result image
                    Set to False default

        Returns:
            rets:   The list contains the filted image
    """
    from hw2_filter import extending
    extendingImage = extending(image, 3, 3)

    height = extendingImage.shape[0]
    width = extendingImage.shape[1]
    filterHeight = 3
    filterWidth = 3

    correlateImage = np.zeros((height, width), dtype=int)
    for x in range(height-(filterHeight-1)):
        for y in range(width-(filterWidth-1)):
            myList = [extendingImage[x+i][y+j] for i in range(filterHeight) for j in range(filterWidth)]
            retList = sorted(myList)
            correlateImage[x+int((filterHeight-1)/2)][y+int((filterWidth-1)/2)] = int(retList[0])

    if view:
        show(image, correlateImage, "minProcess")
        
    return correlateImage
Exemplo n.º 2
0
def harmonicProcess(sourceImage, view=False):
    """HarmonicProcess using filter only shape [3,3]

        Args:
            sourceImage:    The original image
            view:           The flag to decided to show the result image
                            Set to False default

        Returns:
            rets:           The list contains the filted image
    """
    from hw2_filter import extending
    filter_size = [3]
    rets = []
    for size in filter_size:
        # extending
        extendingImage = extending(sourceImage, size, size)
        height, width = extendingImage.shape

        import math
        # calculating
        correlateImage = np.zeros((height, width), dtype=extendingImage.dtype)
        for x in range(height-(size-1)):
            for y in range(width-(size-1)):
                sum = 0
                for j in range(size):
                    for k in range(size):
                        if extendingImage[x+j][y+k] == 0.0:
                            sum = sum + math.inf
                        else:
                            sum = sum + 1/(extendingImage[x+j][y+k])
                correlateImage[x+int((size-1)/2)][y+int((size-1)/2)] = 1/sum

        # cutting
        tarImage = np.zeros(sourceImage.shape, dtype=float)
        for x in range(tarImage.shape[0]):
            for y in range(tarImage.shape[1]):
                tarImage[x][y] = int((correlateImage[x+size-1][y+size-1]))

        ret = np.zeros(sourceImage.shape, dtype=int)
        for x in range(ret.shape[0]):
            for y in range(ret.shape[1]):
                if math.isinf(tarImage[x][y]):
                    ret[x][y] = 255
                else:
                    ret[x][y] = int(size*size*tarImage[x][y])
        rets.append(ret)

    if view:
       show4(sourceImage, rets, "harmonic")

    return rets
Exemplo n.º 3
0
def geometric_meanProcess(image, view=False):
    """Geometic_meanProcess using filter only shape [3,3]

        Args:
            image:  The original image
            view:   The flag to decided to show the result image
                    Set to False default

        Returns:
            rets:   The list contains the filted image
    """
    from hw2_filter import extending
    extendingImage = extending(image, 3, 3)

    height = extendingImage.shape[0]
    width = extendingImage.shape[1]
    filterHeight = 3
    filterWidth = 3

    correlateImg = np.zeros((height, width), dtype=extendingImage.dtype)
    for x in range(height-(filterHeight-1)):
        for y in range(width-(filterWidth-1)):
            sum = 1
            for j in range(filterHeight):
                for k in range(filterWidth):
                    sum = sum * extendingImage[x+j][y+k]
            correlateImg[x+int((filterHeight-1)/2)][y+int((filterWidth-1)/2)] = sum

    # import math
    tarImage = np.zeros((image.shape[0], image.shape[1]), dtype=int)
    for x in range(tarImage.shape[0]):
        for y in range(tarImage.shape[1]):
            tarImage[x][y] = int(pow(correlateImg[x+filterHeight-1][y+filterWidth-1], 1/9))

    if view:
        show(image, tarImage, "geometric_mean")

    return tarImage