所谓灰度图像,即指8位256颜色的图像。将图像的每一位分别取出来,我们就可以将一幅图像分解开来,形成8幅图像。下面我们分别介绍使用matlab分解图像与使用halcon/c++分解图像的方法。

matlab8位分解

clc;
clear all;
A = imread('lena.tif');
% 显示原始图像
subplot(3,3,1);
imshow(A);title('原始图像');
% 显示8个位平面图像
for i=8:-1:1A_bitplane = bitshift(bitget(A,i),i-1);subplot(3, 3, 9-i+1);imshow(A_bitplane);title(['位平面 ' num2str(i)]);
end 

效果:

matlab8位合并复原

clc;
clear all;
A = imread('lena.tif');
Array=cell(1,8);
% 显示8个位平面图像
for i=8:-1:1Array{i} = bitshift(bitget(A,i),i-1);
end %%%复原
%%定义全0矩阵
[M,N]=size(Array{1});
B=zeros(M,N,'uint8');for i=1:8B=bitset(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 (i=0; i<8; i++) {HRegion reg = (image & (1<<i)) != 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(i+1)) != 0; //按照位切片w.ClearWindow();reg.Display(w);cout << "  & bit " << i << endl;}}

附加matlab一个好的教程:

  • http://www-rohan.sdsu.edu/doc/matlab/toolbox/images/images.html
  • bitget,bitset说明文档

参考文献:

1. MATLAB实现256色灰度图像的8位平面分解
2. Matlab bitget() 函数的使用

灰度图像的8位平面分解相关推荐

  1. matlab 灰度级位平面,灰度图像的8位平面分解

    所谓灰度图像,即指8位256颜色的图像.将图像的每一位分别取出来,我们就可以将一幅图像分解开来,形成8幅图像.下面我们分别介绍使用matlab分解图像与使用halcon/c++分解图像的方法. mat ...

  2. 信息隐藏——图片基础

    文章目录 一些名词 原理框图 基本要求 系统特性 一些名词 首先讲几个重要名词,载体对象.伪装对象和伪装密钥.A向B秘密传递一些信息m,不想被别人知道,于是A要从一个随机消息源中随机的选取一个无关紧要 ...

  3. 5.5 Python图像处理之图像编码-位平面编码

    5.5 Python图像处理之图像编码-位平面编码 文章目录 5.5 Python图像处理之图像编码-位平面编码 1 算法原理 2 代码 3 效果 1 算法原理 比特平面编码又称为位平面编码,位平面编 ...

  4. python --- opencv部分学习

    1. OpenCV 1.1 opencv概念 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库 可以运行在Linux.Windows.Android和Mac OS操作系统上 它轻量级而 ...

  5. 数字图像处理(四)——图像编码技术(一)

    基础概念 图像编码的原因: 数据时信息传递的手段,相同的信息可以通过不同的数据量去表示,尝试用不同的表达方式以减少表示图像的数据量,对图像的压缩可以通过对图像的编码实现. 数据压缩 减少表示给定信息所 ...

  6. OpenCV学习笔记

    文章目录 OpenCV 基本操作 读取图像 显示图像 保存图像 waitKey() 创建窗口 销毁窗口 图像处理基础 item() itemset() 通道拆分 通道合并 获取图像属性 图像运算 加法 ...

  7. Opencv学习笔记完整版

    opencv下载 https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/ opencv下载 https:// ...

  8. opencv图像运算(python)

    图像运算 图像运算 图像加法运算 加号运算符 cv2.add 图像加权和 按位逻辑运算 按位与 按位或 按位非 按位异或 掩膜 图像与数值的运算 位平面分解 图像加密和解密 数字水印 图像运算 图像加 ...

  9. python图像处理教程,【图像处理】使用OpenCV+Python进行图像处理入门教程(二)...

    这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2  图像的运算 复杂的 ...

最新文章

  1. jemeter多场景混合案例_Redis 混合存储最佳实践指南
  2. 一个推荐系统,实现完整的设计-在百度搜索关键词推荐案例
  3. Redis配置文件中的三个参数
  4. (0033) iOS 开发之Block 的基础用法及注意事项2
  5. [原创].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
  6. linux版_巧用linux版powershell,管理linux下的docker
  7. ASP.NET跨页面传值技巧总结
  8. Vue项目报错:This relative module was not found
  9. Arrays.copyOf
  10. 使用Telnet客户端测试Exchange邮件收发
  11. GIS空间分析(一)——空间分析与GIS
  12. cannot import name ‘artist‘ from ‘matplotlib‘
  13. python判断性别_惊呆|根据三围数据判断出用户性别竟是python使用逻辑回归算法搞的鬼!...
  14. system32下 exe文件作用
  15. Hadoop三大框架之MapReduce工作流程
  16. 【入门PLC】02、博途TIA Portal V16的HMI简单操作学习(人机交互界面)
  17. ChatGPT入门必知必会
  18. 微信小程序(游戏)----拼图游戏(设计思路)
  19. 索尼xzp升级android p,索尼XZP国行版升级安卓8.0 相机功能优化
  20. 上市企业绿色专利数据集(含处理代码)

热门文章

  1. nodejs常用模块-url
  2. Spring Boot 统一结果封装
  3. es6 var、let、const命令
  4. echarts 折线图 多条折线数据相同时展示的图形并没有重合
  5. 记一次vue项目yarn打包环境配置失效的解决方案
  6. @Scheduled
  7. Maven工程的多模块
  8. 【VMware vSAN 6.6】6.2.启用性能服务:vSAN硬件服务器解决方案
  9. 天猫双11凭什么达到1682亿?这些支撑技术或许可以告诉你
  10. 《大数据原理:复杂信息的准备、共享和分析》一一2.5 在标识符中嵌入信息:不推荐...