临淄专业网站优化哪家好,用织梦系统做网站,陕西旭泽建设有限公司网站,滕州盛扬网站建设推广所谓灰度图像#xff0c;即指8位256颜色的图像。将图像的每一位分别取出来#xff0c;我们就可以将一幅图像分解开来#xff0c;形成8幅图像。下面我们分别介绍使用matlab分解图像与使用halcon/c分解图像的方法。
matlab8位分解 clc;
clear all;
A imread(lena.tif);
% 显…所谓灰度图像即指8位256颜色的图像。将图像的每一位分别取出来我们就可以将一幅图像分解开来形成8幅图像。下面我们分别介绍使用matlab分解图像与使用halcon/c分解图像的方法。
matlab8位分解
clc;
clear all;
A imread(lena.tif);
% 显示原始图像
subplot(3,3,1);
imshow(A);title(原始图像);
% 显示8个位平面图像
for i8:-1:1A_bitplane bitshift(bitget(A,i),i-1);subplot(3, 3, 9-i1);imshow(A_bitplane);title([位平面 num2str(i)]);
end 效果matlab8位合并复原 clc;
clear all;
A imread(lena.tif);
Arraycell(1,8);
% 显示8个位平面图像
for i8:-1:1Array{i} bitshift(bitget(A,i),i-1);
end %%%复原
%%定义全0矩阵
[M,N]size(Array{1});
Bzeros(M,N,uint8);for i1:8Bbitset(B,i,bitget(Array{i},i));
end
figure;
subplot(1,2,1);
imshow(A);title(原始图像);
subplot(1,2,2)
imshow(B);title(复原后图像);结果 halcon分解 方法一自己实现 void Bit()
{using namespace Halcon;cout endl Shifting cutting out bit values: endl;HByteImage image(mreut);HWindow w(0,0,image.Width(),image.Height());w.SetPart(0,0,image.Height()-1,image.Width()-1);image.Display(w);int i;cout - cutting out bit slices endl; for (i0; i8; i) {HRegion reg (image (1i)) ! 0; //按照位切片w.ClearWindow();reg.Display(w);cout bit i endl;}} 方法二使用自带函数
void Bit()
{using namespace Halcon;cout endl Shifting cutting out bit values: endl;HByteImage image(mreut);HWindow w(0,0,image.Width(),image.Height());w.SetPart(0,0,image.Height()-1,image.Width()-1);image.Display(w);int i;cout - cutting out bit slices2 endl;for (i 0; i 8; i){HRegion reg (image.BitSlice(i1)) ! 0; //按照位切片w.ClearWindow();reg.Display(w);cout bit i endl;}} 附加matlab一个好的教程http://www-rohan.sdsu.edu/doc/matlab/toolbox/images/images.htmlbitget,bitset说明文档 参考文献
1. MATLAB实现256色灰度图像的8位平面分解 2. Matlab bitget() 函数的使用