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
Image processing j2me图像处理:浮雕效果和草图效果不起作用_Image Processing_Java Me_Edge Detection_Emboss - Fatal编程技术网

Image processing j2me图像处理:浮雕效果和草图效果不起作用

Image processing j2me图像处理:浮雕效果和草图效果不起作用,image-processing,java-me,edge-detection,emboss,Image Processing,Java Me,Edge Detection,Emboss,我正在从事j2me平台上的一个图像处理项目。我成功地应用了简单的效果,它不涉及卷积矩阵,比如乌贼墨、灰度、负片和后期处理。我甚至用卷积矩阵实现了模糊效果: int矩阵[][]={{1,1,1},{1,1,1},{1,1,1}} 但是,当我为浮雕效果和草图效果更改conv.矩阵时,我得到了意想不到的结果。下面是我的代码。请告诉我哪里出错了。 我使用以下卷积矩阵: 对于浮雕效果:int-matrix[][]={{-18,-9,0},{-9,9},{0,9,18} 对于边缘检测:int矩阵[][]=

我正在从事j2me平台上的一个图像处理项目。我成功地应用了简单的效果,它不涉及卷积矩阵,比如乌贼墨、灰度、负片和后期处理。我甚至用卷积矩阵实现了模糊效果:

int矩阵[][]={{1,1,1},{1,1,1},{1,1,1}}

但是,当我为浮雕效果和草图效果更改conv.矩阵时,我得到了意想不到的结果。下面是我的代码。请告诉我哪里出错了。 我使用以下卷积矩阵:

  • 对于浮雕效果:
    int-matrix[][]={{-18,-9,0},{-9,9},{0,9,18}
  • 对于边缘检测:
    int矩阵[][]={{0,9,0},{9,36,9},{0,9,0}
我提到了以下链接: 和

public void sketchEffect(){
/*
*下面是模糊效果的卷积矩阵,效果很好
*整数卷积矩阵[][]={
*      {1, 1, 1},
*      {1, 1, 1},
*      {1, 1, 1}
*  };
*
/*
*边缘数据处理的卷积矩阵(不工作)
*/
整数卷积矩阵[][]={
{0, 9, 0},
{9, -36, 9},
{0, 9, 0}
};
//加载图像
试一试{
image1=Image.createImage(“/image5.jpg”);
}捕获(IOEX异常){
例如printStackTrace();
}
//用于存储RGB值的1D阵列
//宽度=640px
//高度=360px
int sourceImageArray[]=新int[640*360];
image1.getRGB(sourceImageArray,0640,0,0640,360);
int aa、rr、bb、gg;
int a1、r1、g1、b1;
int sumR=0,sumG=0,sumB=0,sumA=0;
int-currentPix;
对于(int i=1;i<359;i++){
对于(int j=1;j<639;j++){
currentPix=sourceImageArray[(i*640)+j];
a1=(当前PIX>>24)和0xFF;
r1=(currentPix>>16)和0xFF;
g1=(当前PIX>>8)和0xFF;
b1=(当前PIX>>0)和0xFF;
/*
*将当前像素的相邻元素乘以其对应的
*卷积矩阵中的元素
*/
对于(int x=-1;x<2;x++){
对于(int y=-1;y<2;y++){
rr=(sourceImageArray[(i+x)*640)+(j+y)]>>16)和0xFF;
gg=(sourceImageArray[(i+x)*640)+(j+y)]>>8)和0xFF;
bb=(sourceImageArray[(i+x)*640)+(j+y)]>>0)和0xFF;
sumR+=(rr*卷积矩阵[x+1][y+1]);
sumG+=(gg*卷积矩阵[x+1][y+1]);
sumB+=(bb*卷积矩阵[x+1][y+1]);
rr=gg=bb=0;
}
}
sumR=sumR/9;
sumG=sumG/9;
sumB=sumB/9;
if(sumR<0){
sumR=0;
}
如果(总和<0){
sumG=0;
}
if(sumB<0){
sumB=0;
}
如果(sumR>255){
sumR=255;
}
如果(sumG>255){
sumG=255;
}
如果(sumB>255){
sumB=255;
}
sourceImageArray[(i*640)+j]=(a1)
public void sketchEffect() {
/*
 * below is the convolution Matrix for blur effect and it works fine
 * int convolutionMatrix[][] = {
 *      {1, 1, 1},
 *      {1, 1, 1},
 *      {1, 1, 1}
 *  };
 *


/*
 * Convolution matrix for edge dtetction(Not working)
 */
int convolutionMatrix[][] = {
    {0, 9, 0},
    {9, -36, 9},
    {0, 9, 0}
};

//Loading image
try {
    image1 = Image.createImage("/image5.jpg");
} catch (IOException ex) {
    ex.printStackTrace();
}

// 1D array for storing RGB values 
//Width = 640px
//Height = 360px
int sourceImageArray[] = new int[640 * 360];
image1.getRGB(sourceImageArray, 0, 640, 0, 0, 640, 360);
int aa, rr, bb, gg;
int a1, r1, g1, b1;
int sumR = 0, sumG = 0, sumB = 0, sumA = 0;
int currentPix;
for (int i = 1; i < 359; i++) {
    for (int j = 1; j < 639; j++) {
        currentPix = sourceImageArray[(i * 640) + j];
        a1 = (currentPix >> 24) & 0xFF;
        r1 = (currentPix >> 16) & 0xFF;
        g1 = (currentPix >> 8) & 0xFF;
        b1 = (currentPix >> 0) & 0xFF;

        /*
         * multiplying neighbouring elements of current pixel to its corresponding
         * element in convolution matrix
         */
        for (int x = -1; x < 2; x++) {
            for (int y = -1; y < 2; y++) {
                rr = (sourceImageArray[((i + x) * 640) + (j + y)] >> 16) & 0xFF;
                gg = (sourceImageArray[((i + x) * 640) + (j + y)] >> 8) & 0xFF;
                bb = (sourceImageArray[((i + x) * 640) + (j + y)] >> 0) & 0xFF;

                sumR += (rr * convolutionMatrix[x + 1][y + 1]);
                sumG += (gg * convolutionMatrix[x + 1][y + 1]);
                sumB += (bb * convolutionMatrix[x + 1][y + 1]);
                rr = gg = bb = 0;
            }

        }
        sumR = sumR / 9;
        sumG = sumG / 9;
        sumB = sumB / 9;
        if (sumR < 0) {
            sumR = 0;
        }
        if (sumG < 0) {
            sumG = 0;
        }
        if (sumB < 0) {
            sumB = 0;
        }
        if (sumR > 255) {
            sumR = 255;
        }
        if (sumG > 255) {
            sumG = 255;
        }
        if (sumB > 255) {
            sumB = 255;
        }
        sourceImageArray[(i * 640) + j] = (a1 << 24) | (sumR << 16)|(sumG << 8)| sumB;
        sumR = sumB = sumG = 0;
        rr = gg = bb = 0;

    }
 }
}