Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用一维掩模的代码中有错误吗?_Java_Image Processing_Computer Vision_Mask_Boofcv - Fatal编程技术网

Java 应用一维掩模的代码中有错误吗?

Java 应用一维掩模的代码中有错误吗?,java,image-processing,computer-vision,mask,boofcv,Java,Image Processing,Computer Vision,Mask,Boofcv,我试图用BoofCV和Java实现HOG描述符。 HOG的一个步骤是应用一维内核,如下所示: import java.awt.image.BufferedImage; import java.io.File; import boofcv.alg.filter.convolve.GConvolveImageOps; import boofcv.core.image.ConvertBufferedImage; import boofcv.core.image.border.ImageBorder_F

我试图用BoofCV和Java实现HOG描述符。 HOG的一个步骤是应用一维内核,如下所示:

import java.awt.image.BufferedImage;
import java.io.File;
import boofcv.alg.filter.convolve.GConvolveImageOps;
import boofcv.core.image.ConvertBufferedImage;
import boofcv.core.image.border.ImageBorder_F32;
import boofcv.gui.image.ShowImages;
import boofcv.io.image.UtilImageIO;
import boofcv.struct.convolve.*;
import boofcv.struct.image.ImageFloat32;

public class Main {

    public static void main(String[] args) {
        String IMAGE_LOCATION = "D:/dog_orig.jpg";
        File image_file = new File(IMAGE_LOCATION);

        if(!image_file.exists()) {
            System.err.println("Image not Found");
            System.exit(1);
        }

        // Load image
        BufferedImage pic  = UtilImageIO.loadImage(IMAGE_LOCATION   );

        // Initialize destinations images
        ImageFloat32 dest1 = new ImageFloat32(pic.getWidth(), pic.getHeight());
        ImageFloat32 dest2 = new ImageFloat32(pic.getWidth(), pic.getHeight());
        ImageFloat32 distortedImg = ConvertBufferedImage.convertFrom(pic, dest1);

        // Initialize kernel
        Kernel1D_F32 kx = new Kernel1D_F32(3);
        Kernel1D_F32 ky = new Kernel1D_F32(3);
        kx.data[0] = -1;
        kx.data[1] = 0;
        kx.data[2] = 1;

        ky.data[0] = 1;
        ky.data[1] = 0;
        ky.data[2] = -1;

        ImageBorder_F32 border = new ImageBorder_F32() {
            @Override
            public void setOutside(int arg0, int arg1, float arg2) {
                // TODO Auto-generated method stub   
            }
            @Override
            public float getOutside(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return 0;
            }
        };

        // Apply 1-D mask horizontal
        GConvolveImageOps.horizontal(kx, distortedImg, dest2, border);
        // Apply 1-D mask vertical
        GConvolveImageOps.vertical(ky, distortedImg, dest2, border);

        BufferedImage destenation = new BufferedImage(dest2.getWidth(),dest2.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
        destenation=ConvertBufferedImage.convertTo(distortedImg, destenation);
        ShowImages.showWindow( destenation,"image after apply kernel ");

        System.out.print("Done");
    }
}
Gx(x,y)=[-101]*I(x,y)

Gy(x,y)=[-101]T*I(x,y)

我为这一步编写了如下代码:

import java.awt.image.BufferedImage;
import java.io.File;
import boofcv.alg.filter.convolve.GConvolveImageOps;
import boofcv.core.image.ConvertBufferedImage;
import boofcv.core.image.border.ImageBorder_F32;
import boofcv.gui.image.ShowImages;
import boofcv.io.image.UtilImageIO;
import boofcv.struct.convolve.*;
import boofcv.struct.image.ImageFloat32;

public class Main {

    public static void main(String[] args) {
        String IMAGE_LOCATION = "D:/dog_orig.jpg";
        File image_file = new File(IMAGE_LOCATION);

        if(!image_file.exists()) {
            System.err.println("Image not Found");
            System.exit(1);
        }

        // Load image
        BufferedImage pic  = UtilImageIO.loadImage(IMAGE_LOCATION   );

        // Initialize destinations images
        ImageFloat32 dest1 = new ImageFloat32(pic.getWidth(), pic.getHeight());
        ImageFloat32 dest2 = new ImageFloat32(pic.getWidth(), pic.getHeight());
        ImageFloat32 distortedImg = ConvertBufferedImage.convertFrom(pic, dest1);

        // Initialize kernel
        Kernel1D_F32 kx = new Kernel1D_F32(3);
        Kernel1D_F32 ky = new Kernel1D_F32(3);
        kx.data[0] = -1;
        kx.data[1] = 0;
        kx.data[2] = 1;

        ky.data[0] = 1;
        ky.data[1] = 0;
        ky.data[2] = -1;

        ImageBorder_F32 border = new ImageBorder_F32() {
            @Override
            public void setOutside(int arg0, int arg1, float arg2) {
                // TODO Auto-generated method stub   
            }
            @Override
            public float getOutside(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return 0;
            }
        };

        // Apply 1-D mask horizontal
        GConvolveImageOps.horizontal(kx, distortedImg, dest2, border);
        // Apply 1-D mask vertical
        GConvolveImageOps.vertical(ky, distortedImg, dest2, border);

        BufferedImage destenation = new BufferedImage(dest2.getWidth(),dest2.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
        destenation=ConvertBufferedImage.convertTo(distortedImg, destenation);
        ShowImages.showWindow( destenation,"image after apply kernel ");

        System.out.print("Done");
    }
}
但在我戴上面具后,图像没有改变

输入图像。

应用遮罩后的图像。

这是真的还是代码中有错误,图像应该更改

问候!
提前谢谢

我将编辑回滚到以前的版本。您的编辑使其更难阅读,并且没有正确包含图像。:)感谢您的快速编辑:)