图像处理核心那是算法,至于使用OpenCV还是matlab还是MFC,现在看来真的都无所谓
下面是对一张灰度图片进行比特分层,看一下一张图片的8bit共有几个bit是真正起作用的,
这对以后的图像压缩具有很大的指导意义。
matlab源码:
A =imread('huidu.bmp') A1 = A subplot(3,3,1) imshow(A) for n = 1:8 for i = 1:256 for j = 1 :256 if(A(i,j) > 8*2^(n-1) && A(i,j) < 8*2^n ) A1(i,j) = A(i,j); else A1(i,j) = 0; end end end subplot(3,3,n+1) imshow(A1) end
由图片可知,事实上几乎只有第3 4 5bit是有效地,其余的几个bit几乎不起作用。
那下面我们3 4 5bit合并进行显示这张图片,看一下会显示出多少的细节。
A2 = A subplot(2,2,1) imshow(A) for n = 3:5 for i = 1:256 for j = 1 :256 if(A(i,j) > 8*2^(n-1) && A(i,j) < 8*2^5 ) A1(i,j) = A(i,j); else A1(i,j) = 0; end end end subplot(2,2,n -1) imshow(A1) end
四张图片分别为:
原图,第3 4 5bit合成,第4 5 bit合成,第5bit 合成
由图像可知:采用第3 4 5 bit这3bit已经基本可以显示大部分的图像细节,如果用于压缩,
可以压缩至37.5%