使用MATLAB和C将.bin转换为图像系数并创建二进制图像

时间:2016-04-19 10:26:30

标签: c image matlab image-processing

我正在做家庭作业,我们获得了一个包含灰度图像数据的.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也是一个const,是我填充到头文件中的数组之一。 suzi的长度设置为13684,suziarr的长度设置为2048.无论出于何种原因,无论我使用哪4组数据,我都得到完全相同的数字,所以这里有些错误。我错过了什么?

1 个答案:

答案 0 :(得分:0)

循环

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

不会迭代。它应该是

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