[PYTHON] Laplace-Filter-Experiment

Übersicht Ich wollte Kanten erkennen (eigentlich ist es eher ein Farbunterschied als eine Kante) und habe mich gefragt, welcher besser ist, der Laplace-Filter in 4 oder 8 Richtungen, also habe ich experimentiert.

Eingabebild ![gray.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/2b678c00-02d5-185b-3ff9-eb5614a0e74b.png)

4-Wege-Laplace-Filter ![img_lap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/3748afe0-b3dc-dfcb-dfe5-ece09439f834.png)

8-Richtungs-Laplace-Filter ![img_lap copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/7a69082e-6639-cb43-596d-2f3ed706d6ee.png)

Schlussfolgerung Fast das gleiche! Da das Ergebnis das gleiche ist, möchte ich den 8-Richtungsfilter verwenden, der vorerst weniger Einfluss auf die Rotation zu haben scheint.

Code 8 Richtungen 4 Richtungen Bitte wählen Sie Ihren Favoriten
   def LaplacianLayer(self, img):
        # 4 direction Laplacian
        laplacian_filter = torch.cuda.FloatTensor(
            [[0, 1, 0], [1, -4, 1], [0, 1, 0]]).view(1, 1, 3, 3)
        # 8 direction Laplacian
        # laplacian_filter = torch.cuda.FloatTensor(
        #     [[1, 1, 1], [1, -8, 1], [1, 1, 1]]).view(1, 1, 3, 3)

        gray = self.getGrayImage(img)

        img_lap = torch.nn.functional.conv2d(input=gray,
                                            weight=Variable(laplacian_filter),
                                            stride=1,
                                            padding=0)

        img_lap = torch.abs(img_lap)

        return img_lap

    def getGrayImage(self,rgbImg):
        gray = 0.114*rgbImg[:,0,:,:] + 0.587*rgbImg[:,1,:,:] + 0.299*rgbImg[:,2,:,:]
        gray = torch.unsqueeze(gray,1)
        return gray

Referenzen [Bildverarbeitung] Prinzipien, Funktionen und Berechnungsformeln für Laplace-Filter https://algorithm.joho.info/image-processing/laplacian-filter/

Recommended Posts

Laplace-Filter-Experiment
Experiment untersuchen
SVM-Experiment 1
Kantenextraktion mit Python + OpenCV (Sobel-Filter, Laplace-Filter)