我对使用Visual进行图像处理相当陌生,我正在寻找一种读取黑白TIFF文件并将图像写入表示0或1的数组十六进制值的方法,然后获取0(黑色)或1(白色)的位置信息。
在对Google进行了一些研究之后,在这里有一篇关于https://www.ibm.com/developerworks/linux/library/l-libtiff/#resources的文章,我有以下一些琐碎的问题,请告诉我相关的文章,有太多的文章让我无法理解它们,同时我还会继续搜索和阅读。
是否可以使用LIBTIFF从TIFF中提取像素位置信息?
再次,作为所有图像格式的新事物,我不禁认为图像是由二维十六进制值数组组成的,位图格式更合适吗?通过这种方式思考,我想知道我是否可以将“白色”或“黑色”的位置从它的高度映射到一个2D数组上。我想知道“黑”或“白”的位置,这可能吗?我真的不想要一个代表图像的0和1s数组,甚至不确定我是否需要它们。
4x2BW图像的TIFF示例:
输出到名为mappingNonPrint()的函数下的类似mappingNonPrint()的函数
或在名为mappingPrint()的函数下
对于LIBTIFF,它读取TIFF文件的方向/方式是什么?
理想情况下,我希望TIFF文件从上到下垂直读取,然后移到下一列,然后从上到下重新开始。但是我的直觉告诉我,这是一个童话故事,对于图像处理来说是非常新的,我想知道TIFF是怎么读的--例如,一个单张的。
更多信息
我想我应该加上为什么我想要像素位置。我试图制作一台圆柱形滚筒打印机,使用光学旋转编码器提供位置反馈文件的高度表示轧辊表面的周长,文件的宽度表示旋转的次数。
下面是我的ENC_reg()的一个非常未经测试的逻辑,它与图像处理部分几乎没有关系,但这可能有助于读者了解我试图对tiff图像的处理数组做什么。我被索引从0到imageHeight,但是,每个元素可能是一个任意数字,从0到imageHeight,可以是112,354等等,它对应于在tiff图像中包含黑色的任何位置。J从0索引到imageWidth,其中的每个元素也从0开始到imageWidth。例如,ptLocArray1意味着第一个在列2中有一个黑色像素的位置,那里存储的值可能是231。从第2列顶部开始的231像素计数。
我意识到arrayimageHeight应该是arraymaxnum_blackPixelPerColumn,但是我不知道如何计算1的数量,或者每个column....because的0,我不知道如何像我前面提到的那样按正确的顺序转换1和0。
void ENC_reg()
{
if(inputPort_ENC_reg == true) // true if received an encoder signal
{
ENC_regTemp ++; // increment ENC register temp value by one each time the port registers a signal
if(ENC_regTemp == ptLocArray[i][j])
{
Rollprint(); // print it
i++; // increment by one to the next height location that indicates a "black", meaning print
if (ENC_regTemp == imageHeight)
{
// Check if end of column reached, end of a revolution
j++; // jump to next column of the image (starting next revolution)
i = 0; // reset i index to 0, to the top of the next column
ENC_regTemp = 0; // reset encoder register temp to 0 for the new revolution
};
};
ENC_reg(); // recall itself;
};
}发布于 2012-07-10 10:10:55
在我阅读您的示例时,您希望图像的每一列都有两个数组,一个包含该列中带有黑色像素的行数,另一个包含带有白色像素的行索引。到目前为止?
这当然是可能的,但需要大量的内存。即使未压缩,灰度图像的单个像素也将占用一个字节的内存。您甚至可以使用位打包,并将8个像素塞进一个字节。另一方面,除非您将自己限制在不超过255行的图像上,否则您将有多个字节来表示每个列索引。你需要额外的逻辑来标记列的结尾。
我的观点是:尝试使用“0和1s数组”,因为这应该更容易完成,内存要求更低,运行效率更高。
https://stackoverflow.com/questions/11409036
复制相似问题