我想读取一个8位灰度bmp文件,重建它的像素矩阵,然后用sobel算子处理它。然而程序不能构造像素矩阵,它划分原始的pitcure块。当我运行这样的程序;
./ sobel cube.bmp output.bmp processed.bmp output.txt
cube.bmp是输入
output.bmp是构造像素矩阵的输出。
proccessed.bmp是使用sobel运算符处理的输出
Code and Sample photos
答案 0 :(得分:2)
可能不是您正在寻找的答案,但请看看openCV。
假设您对图像处理步骤的兴趣不是特别是BMP操作,那么这个库会为您处理所有文件i / o,显示等。它还有一个很好的索贝尔过滤器。
答案 1 :(得分:1)
几条评论:
您的 processed.bmp 具有使用不正确的行大小或像素大小编写的位图外观。你可以知道,因为每一行都是水平移动的。
您正在处理灰度位图,但您正在读取和写入像素,就像它们具有RGB分量一样,即:
pixelArray[i][j].red = pixel.red;
pixelArray[i][j].green = pixel.green;
pixelArray[i][j].blue = pixel.blue;
灰度像素只是一个8位值。