1

私の個人的なプロジェクトの 1 つで、次の水平エッジ マスクをグレースケール イメージに適用しようとしました。水平エッジ マスクを適用して、画像の水平エッジを検出しようとしています。

[1 2 1
 0 0 0 
-1 -2 -1]

上記のマスクを使用してイメージ マトリックスを畳み込もうとすると、出力イメージが 180 度回転します。それが予期された動作なのか、それとも何か間違ったことをしているのかわからないのですか?

これが畳み込みのコードスニペットです。

def convolution(self):
    result = np.zeros((self.mat_width, self.mat_height))
    print(self.mat_width)
    print(self.mat_height)

    for i in range(0, self.mat_width-self.window_width):
        for j in range(0, self.mat_height-self.window_height):
            # deflate both mat and mask 
            # if j+self.window_height >= self.mat_height:
            #   row_index = j+self.window_height + 1
            # else:

            row_index = j+self.window_height                
            col_index = i+self.window_width 

            mat_masked = self.mat[j:row_index, i:col_index]
            # pixel position 
            index_i = i + int(self.window_width / 2) 
            index_j = j + int(self.window_height / 2) 


            prod = np.sum(mat_masked*self.mask)


            if prod >= 255:
                result[index_i, index_j] = 255
            else:
                result[index_i, index_j] = 0

    return result

元のグレースケール入力画像はこちら - ここに画像の説明を入力

生成される出力は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1