def processImage(self, image):
        num_ops = 0
        img = np.array(image)
        img_sto = np.zeros((len(img), len(img[0])))
        img_edg = np.zeros((len(img), len(img[0])))

        # for loop generate stochastic image
        r_num = random.randint(0, 255)
        for i in range(0, len(img)):
            for j in range(0, len(img[i])):
                r_bit = SNG.gen_bit_const(img[i][j], r_num)  #
                img_sto[i][j] = r_bit
            num_ops += 1
        # self.msc.gen_rc()

        # self.save_img(img_sto * 255, "raw_img", self.it)
        self.it += 1
        self.msc.gen_rc()
        # loop for roberts cross operator
        for i in range(0, len(img_sto) - 1):
            for j in range(0, len(img_sto[i]) - 1):
                # run MSC

                sc = self.msc.run_rc([
                    img_sto[i][j], img_sto[i + 1][j + 1], img_sto[i + 1][j],
                    img_sto[i][j + 1]
                ], 0)
                img_edg[i][j] = sc
                num_ops += 1 + 16  # for msc interations

        # output = binary rc mask
        # print('process img: {}'.format(num_ops))
        return img_edg
    def processImage(self, image):
        img = np.array(image)
        img_sto = np.zeros((len(img), len(img[0])))
        img_edg = np.zeros((len(img), len(img[0])))
        self.msc.gen_rc()

        # for loop generate stochastic image
        r_num = random.randint(0, 255)
        for i in range(0, len(img)):
            for j in range(0, len(img[i])):
                r_bit = SNG.gen_bit_const(img[i][j], r_num)
                img_sto[i][j] = r_bit

        # loop for roberts cross operator
        for i in range(0, len(img_sto) - 1):
            for j in range(0, len(img_sto[i]) - 1):
                sc = 0
                # run MSC

                sc = self.msc.run_rc([
                    img_sto[i][j], img_sto[i + 1][j + 1], img_sto[i + 1][j],
                    img_sto[i][j + 1]
                ])

                img_edg[i][j] = sc

        # print('process img: {}'.format(num_ops))
        return img_edg
    def processImage(self, image):
        num_ops = 0
        img = np.array(image)
        img_sto = np.zeros((len(img), len(img[0])))
        img_edg = np.zeros((len(img), len(img[0])))
        self.msc.gen_rc()

        # for loop generate stochastic image

        for i in range(0, len(img) - 16, 16):
            for j in range(0, len(img[i]) - 16, 16):
                r_num = random.randint(0, 255)
                for x in range(0, 16):
                    for y in range(0, 16):
                        # print('i{}, j{}, x{}, y{} '.format(i, j, x, y))
                        r_bit = SNG.gen_bit_const(img[i + x][j + y], r_num)
                        img_sto[i + x][j + y] = r_bit
                        num_ops += 1
        self.save_img(img_sto * 255, "raw_img", self.it)
        # loop for roberts cross operator
        for i in range(0, len(img_sto) - 1):
            for j in range(0, len(img_sto[i]) - 1):
                # run MSC
                sc = self.msc.run_rc([
                    img_sto[i][j], img_sto[i + 1][j + 1], img_sto[i + 1][j],
                    img_sto[i][j + 1]
                ])
                img_edg[i][j] = sc
                num_ops += 1 + 16  # for msc interations
        self.it += 1
        # print('process img: {}'.format(num_ops))
        return img_edg
Example #4
0
    def __init__(self):
        self.sng = SNG.SngHandler('sng', 0.1)
        self.msc = MSC.MscHandler('circuit')
        self.stb = STB.StochToBin('stb')
        self.pc = PC.ParityCheck('pc')
        self.data = Data.Data('data')
        self.sc = MSC.Circuit('sub_circuit_1')

        # link
        self.stb.msc_link = self.msc
        self.msc.sng_link = self.sng
        self.msc.stb_link = self.stb
def main():
    input = [1, 0, 0, 1, 1, 1]

    # sng = SNG.StochasticNumberGenerator('sng', 0.1, 10)
    # y_in = sng.generate_stochastic_bitstream(input)

    wsng = SNG.WeightedStochasticNumberGenerator('sng', 0.1)
    y_in = wsng.generate_stochastic_bitstream(input)
    circuit = sc_queue.Circuit('queue_circuit')
    circuit.generate()

    parity = False
    i = 0

    threshold = 10
    while parity == False and i < threshold:
        print('yin = ' + str(y_in))
        y_out = circuit.run_circuit(y_in)
        x_out = STB.convert_all(y_out)
        parity = PC.parity_check(x_out)
        print(parity)
        y_in = y_out
        i += 1