灰度图像的8位平面分解
所谓灰度图像,即指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说明文档
参考文献:
灰度图像的8位平面分解相关推荐
- matlab 灰度级位平面,灰度图像的8位平面分解
所谓灰度图像,即指8位256颜色的图像.将图像的每一位分别取出来,我们就可以将一幅图像分解开来,形成8幅图像.下面我们分别介绍使用matlab分解图像与使用halcon/c++分解图像的方法. mat ...
- 信息隐藏——图片基础
文章目录 一些名词 原理框图 基本要求 系统特性 一些名词 首先讲几个重要名词,载体对象.伪装对象和伪装密钥.A向B秘密传递一些信息m,不想被别人知道,于是A要从一个随机消息源中随机的选取一个无关紧要 ...
- 5.5 Python图像处理之图像编码-位平面编码
5.5 Python图像处理之图像编码-位平面编码 文章目录 5.5 Python图像处理之图像编码-位平面编码 1 算法原理 2 代码 3 效果 1 算法原理 比特平面编码又称为位平面编码,位平面编 ...
- python --- opencv部分学习
1. OpenCV 1.1 opencv概念 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库 可以运行在Linux.Windows.Android和Mac OS操作系统上 它轻量级而 ...
- 数字图像处理(四)——图像编码技术(一)
基础概念 图像编码的原因: 数据时信息传递的手段,相同的信息可以通过不同的数据量去表示,尝试用不同的表达方式以减少表示图像的数据量,对图像的压缩可以通过对图像的编码实现. 数据压缩 减少表示给定信息所 ...
- OpenCV学习笔记
文章目录 OpenCV 基本操作 读取图像 显示图像 保存图像 waitKey() 创建窗口 销毁窗口 图像处理基础 item() itemset() 通道拆分 通道合并 获取图像属性 图像运算 加法 ...
- Opencv学习笔记完整版
opencv下载 https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/ opencv下载 https:// ...
- opencv图像运算(python)
图像运算 图像运算 图像加法运算 加号运算符 cv2.add 图像加权和 按位逻辑运算 按位与 按位或 按位非 按位异或 掩膜 图像与数值的运算 位平面分解 图像加密和解密 数字水印 图像运算 图像加 ...
- python图像处理教程,【图像处理】使用OpenCV+Python进行图像处理入门教程(二)...
这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2 图像的运算 复杂的 ...
最新文章
- jemeter多场景混合案例_Redis 混合存储最佳实践指南
- 一个推荐系统,实现完整的设计-在百度搜索关键词推荐案例
- Redis配置文件中的三个参数
- (0033) iOS 开发之Block 的基础用法及注意事项2
- [原创].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
- linux版_巧用linux版powershell,管理linux下的docker
- ASP.NET跨页面传值技巧总结
- Vue项目报错:This relative module was not found
- Arrays.copyOf
- 使用Telnet客户端测试Exchange邮件收发
- GIS空间分析(一)——空间分析与GIS
- cannot import name ‘artist‘ from ‘matplotlib‘
- python判断性别_惊呆|根据三围数据判断出用户性别竟是python使用逻辑回归算法搞的鬼!...
- system32下 exe文件作用
- Hadoop三大框架之MapReduce工作流程
- 【入门PLC】02、博途TIA Portal V16的HMI简单操作学习(人机交互界面)
- ChatGPT入门必知必会
- 微信小程序(游戏)----拼图游戏(设计思路)
- 索尼xzp升级android p,索尼XZP国行版升级安卓8.0 相机功能优化
- 上市企业绿色专利数据集(含处理代码)
热门文章
- nodejs常用模块-url
- Spring Boot 统一结果封装
- es6 var、let、const命令
- echarts 折线图 多条折线数据相同时展示的图形并没有重合
- 记一次vue项目yarn打包环境配置失效的解决方案
- @Scheduled
- Maven工程的多模块
- 【VMware vSAN 6.6】6.2.启用性能服务:vSAN硬件服务器解决方案
- 天猫双11凭什么达到1682亿?这些支撑技术或许可以告诉你
- 《大数据原理:复杂信息的准备、共享和分析》一一2.5 在标识符中嵌入信息:不推荐...