Exemple #1
0
def run():
    print("***RUNNING***")

    cutoff = setCutoff.get()
    order = setOrder.get()
    width = setWidth.get()

    # Load image
    print("Uploading " + img)
    image = cv2.imread(img, 0)

    # Timer Start
    start = time.time()
    print("Starting Timer")

    # Filter Image
    obj = Filters(image, filter, cutoff, order, width)
    out = obj.FFT()

    # Timer End
    end = time.time()
    print("Timer Stopped")
    t = float("{0:.3f}".format(end - start))
    print("Total Time = ", t)

    # clear old plots
    plt.clf()

    # Image display
    a1 = fig.add_subplot(221)
    a1.imshow(image, cmap='binary_r')
    a1.axis('off')
    a1.set_title("Original Image")

    # DFT graph
    a2 = fig.add_subplot(222)
    a2.imshow(out[0], cmap='binary_r')
    a2.xaxis.set_visible(False)
    a2.yaxis.set_visible(False)
    a2.set_title("Magnitude DFT")

    # Mask graph
    a3 = fig.add_subplot(223)
    a3.imshow(out[1], cmap='binary_r')
    a3.set_facecolor('k')
    a3.xaxis.set_visible(False)
    a3.yaxis.set_visible(False)
    a3.set_title("Mask")

    # Resulting Image display
    """if there is a value inside of the Weight field,
    the program assumes to use unsharp, otherwise
    it uses original filter"""
    if is_number(setWeight.get()):
        # output_dir = 'output/'
        # output_image_name = output_dir + "_" + datetime.now().strftime("%m%d-%H%M%S") + ".jpg"
        outName = "output/result.png"
        image1 = np.int32(image)
        image2 = np.int32(out[2])
        diff = image1 - image2
        unsharpImage = (image + (float(setWeight.get()) * diff))
        cv2.imwrite(outName, unsharpImage)
        # writes the image first, then displays the result. Doing this the other way around causes imshow to display a different image
        resultImage = cv2.imread('output/result.png', 0)
        a4 = fig.add_subplot(224)
        a4.imshow(resultImage, cmap='binary_r')
        a4.set_title("Filtered Image")

    else:
        a4 = fig.add_subplot(224)
        a4.imshow(out[2], cmap='binary_r')
        a4.axis('off')
        a4.set_title("Filtered Image")

    fig.tight_layout()
    canvas = FigureCanvasTkAgg(fig, master=window)
    canvas.get_tk_widget().grid(row=2, columnspan=6)

    # print time
    t1 = str(t)
    msg = "Time Elapsed: " + t1
    Label(window, text=msg, font=("Times", 15), fg="red").grid(row=3,
                                                               sticky=NE)
    canvas.draw()
def run():
    print("***RUNNING***")
    if (setFFT.get() == 0):
        print("Using Built-in FFT")
    if (setFFT.get() == 1):
        print("Using own FFT")

    cutoff = setCutoff.get()
    order = setOrder.get()
    width = setWidth.get()
    weight = setWeight.get()
    x_val = setX.get()
    y_val = setY.get()
    whichFFT = setFFT.get()

    # Load image
    print("Uploading " + img)
    image = cv2.imread(img, 0)

    # Timer Start
    start = time.time()
    print("Starting Timer")

    # Filter Image

    obj = Filters(image, filter, cutoff, order, width, weight, x_val, y_val,
                  whichFFT)

    out = obj.FFT()

    # Timer End
    end = time.time()
    print("Timer Stopped")
    t = float("{0:.3f}".format(end - start))
    print("Total Time = ", t)

    # clear old plots
    plt.clf()

    # Image display
    a1 = fig.add_subplot(221)
    a1.imshow(image, cmap='binary_r')
    a1.axis('off')
    a1.set_title("Original Image")

    # DFT graph
    a2 = fig.add_subplot(222)
    a2.imshow(out[0], cmap='binary_r')
    a2.xaxis.set_visible(False)
    a2.yaxis.set_visible(False)
    a2.set_title("Magnitude DFT")

    # Mask graph
    a3 = fig.add_subplot(223)
    a3.imshow(out[1], cmap='binary_r')
    a3.set_facecolor('k')
    a3.xaxis.set_visible(False)
    a3.yaxis.set_visible(False)
    a3.set_title("Mask")

    # Resulting Image display
    a4 = fig.add_subplot(224)
    a4.imshow(out[2], cmap='binary_r')
    a4.axis('off')
    a4.set_title("Filtered Image")

    fig.tight_layout()
    canvas = FigureCanvasTkAgg(fig, master=window)
    canvas.get_tk_widget().grid(row=2, columnspan=6)

    output_dir = 'output/'
    output_image_name = output_dir + "_dft_filter_" + datetime.now().strftime(
        "%m%d-%H%M%S") + ".jpg"
    cv2.imwrite(output_image_name, out[2])

    # print time
    t1 = str(t)
    msg = "Time Elapsed: " + t1
    Label(window, text=msg, font=("Times", 15), fg="red").grid(row=3,
                                                               sticky=NE)
    canvas.draw()