matlab中的对图像像素进行简单除法后图像色彩变化

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:42:00
RT:对一幅彩色的bmp图像,进行简单的i=(i+i)/2后,色彩居然就变化了,这里的i是图像矩阵中的每一个像素,并没有进行直接的矩阵运算。什么原因引起的啊?如何解决??

是这样的,你的BMP图像读进去的数据是uint8型,也就是八位整型,所以最大值是256,假设你其中有一个数据是156,进行运算正常过程是i=(156+156)/2=156;但由于是八位整型,所以156+156=312>256,所以156+156的值就变成了256,i=(i+i)/2=128,对所有超过128的数据都是这样。

解决办法:
I=double(I);
I(:)=(I(:)+I(:))/2;
imshow(uint8(I));

这样就没有问题了。