【问题标题】:Converting .bin to image coefficients and creating binary image using MATLAB and C将 .bin 转换为图像系数并使用 MATLAB 和 C 创建二进制图像
【发布时间】:2016-08-11 11:18:45
【问题描述】:

我正在做一个家庭作业,我们得到了一个包含灰度图像数据的 .bin 文件。这里的目标是编写 C 代码,将其从灰度转换为二进制图像。首先是在 MATLAB 中打开灰度图像,我设法通过以下方式完成:

A = fread(file, 256*256, 'uint8=>uint8');
A = reshape(A, 256, 256).';
imshow(A);

太好了。我有我的图像系数,我将其分成 4 个数组并填充到 C 头文件中。我必须这样做,因为我们用于此类的微控制器 - MSP430 - 无法一次处理所有这些。我导入了第一个头文件,设置了我的变量,所有繁重的工作都在这里完成:

for (i = 0; i == 16384; i++){
    if (suzi[i] >= 95){ //95 is given threshhold
        temp = 0b0000000;
    }
    else{
        temp = 0b00000001 << shiftby; //will right shift by 7, then 6, then 5 until 0 and then wrap back to 7
    }

    current = previous | temp; //updates the 8 bit data with the latest bit
    if(shiftby > 0){
        shiftby--; //decrements shifts until 0
    }
    else{
        shiftby = 7; //wraps back to 7
        suziarr[arrayindex] &= 0b00000000; //makes sure this value is 8 0s
        suziarr[arrayindex] |= current; //sets bits to match current 8 bit value
        current = 0b00000000;
        arrayindex++; //this is why the array will be 1/8 the size
    }

    previous = current; //update state

}

temp、suzi、suziarr、previous 和 current 变量被声明为 unsigned char 类型。 suzi 也是一个常量,是我塞进头文件的数组之一。 suzi 的长度设置为 13684,而 suziarr 的长度设置为 2048。无论出于何种原因,无论我使用 4 组数据中的哪一组,我都会得到完全相同的数字,所以这里出了点问题。我错过了什么?

【问题讨论】:

    标签: c image matlab image-processing


    【解决方案1】:

    循环

    for (i = 0; i == 16384; i++)
    

    不会迭代。应该是

    for (i = 0; i < 16384; i++)
    

    【讨论】:

    • 不敢相信我错过了!谢谢!好的,所以我有了有意义的系数,但是当我使用与以前相同的命令将它们导入 MATLAB 时,我得到了一个 uint8 类型的大小为 31891x1 的列向量。我正在寻找相同类型的列向量,但大小为 65536x1,因为我需要将其重塑为 256x256 图像。有什么想法吗?
    • 尝试使用 fscanf 而不是 fread 并得到一个双精度类型的 8192x1 列向量。如果我能找到一种方法将其扩展到 1 和 0 并获得 8192x8 向量,我会很高兴。
    • 这是一个不同的问题吗?您还没有显示任何内容。
    • 哎呀。忘记了 MATLAB 的一半。 .bin 文件一旦导入,就会以大小为 65536x1 的列向量形式出现,类型为 uint8。我可以重塑它以获得 256x256 图像。我将我的 suziarr 保存到 .dat 文件中,然后将其导入 MATLAB 以尝试获取另一个 65536x1 数组或至少可以重新整形为 256x256 矩阵的东西,以便生成我需要的二进制图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多