灰度图像的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说明文档


参考文献:

1. MATLAB实现256色灰度图像的8位平面分解

2. Matlab bitget() 函数的使用










本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10 UAP 绑定

Compiled DataBinding in Windows Universal Applications (UAP) http://nicksnettravels.builttoroam.com/post/2015/04/26/Compiled-DataBinding-in-Windows-Universal-Applications-(UAP).aspx 读写剪贴板 http://www.cnphp6.com/archives/80079 Learn how the Reversi samp…

HDUOJ----4501小明系列故事——买年货(三维背包)

小明系列故事——买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2146 Accepted Submission(s): 953 Problem Description春节将至&#xff0c;小明要去超市购置年货&#xff0c;于是小明去了自己经常去…

css 横线_atom.css正式发布,从此跟CSS框架说拜拜。

atom.css 大家好&#xff0c;我写了一个css库atom.css&#xff0c;蛮好用的&#xff0c;所以忍不住分享给大家。(https://github.com/MatrixAge/atom.css)起因写HTML几年了&#xff0c;再到如今的JSX&#xff0c;最大的感受不是枯燥&#xff0c;而是眼花。写样式的时候&#xf…

halcon模板匹配学习(一) Matching 初印象

什么是模板匹配呢&#xff1f;简单而言&#xff0c;就是在图像中寻找目标图像&#xff08;模板&#xff09;&#xff0c;或者说&#xff0c;就是在图像中寻找与模板图像相似部分的一种图像处理技术。依赖于选择的方法不同&#xff0c;模板匹配可以处理各种情形下的变换&#xf…

第五章 面向方面编程___AOP入门

上一篇讲了 AOP 和 OOP 的区别&#xff0c;这一次我们开始入门 AOP 。实现面向方面编程的技术&#xff0c;主要分为两大类&#xff1a; 一是 采用动态代理技术&#xff0c;利用截取消息的方式&#xff0c;对该消息进行装饰&#xff0c;以取代原有对象行为的执行&#xff1b; 二…

java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库

本文转自与博客园一杯凉茶的博客.在之前我们学过在JSP页面上为了不使用脚本&#xff0c;所以我们有了JSP内置的行为、行为只能提供一小部分的功能&#xff0c;大多数的时候还是会用java脚本&#xff0c;接着就使用了EL表达式&#xff0c;基本上EL表达式看似能满足我们的要求&am…

python中*args和**args的不同

上一段代码&#xff0c;大家感受一下 def test_param(*args): print(args) def test_param2(**args): print(args) test_param(test1,test2) >>>(test1,test2) test_param2(p1test1,p2test2) >>>{p1:test1, p2:test2} python提供了两种特别的方法来定义函数的…

halcon模板匹配学习(二) 准备模板

如下&#xff0c;我们将介绍匹配的第一个操作&#xff1a;准备模板 初始时刻&#xff0c;我们准备好参考图像&#xff0c;并对其做一定的处理&#xff0c;然后我们需要从参考图像中导出模板&#xff0c;也就是将参考图像裁剪成所谓的模板图像。获取模板图像可以通过设置ROI来完…

揭秘继承技术之虚函数

虚函数 调用虚函数时函数行为将根据对象所属类的不同而变化。 父类指针或引用指向子类对象时&#xff0c;可访问子类重写方法&#xff08; virtual函数&#xff09;但无法访问在父类中没有定义的子类方法和数据成员。 #include <iostream>using namespace std;class Supe…

java中GET方式提交和POST方式提交

java中GET方式提交的示例&#xff1a; /*** 获取关注列表;* return*/SuppressWarnings("unchecked")public static ArrayList<String> getUserList() {StringBuffer bufferRes new StringBuffer();ArrayList<String> users null;try {URL realUrl new…

基于HALCON的模板匹配方法总结

很早就想总结一下前段时间学习HALCON的心得&#xff0c;但由于其他的事情总是抽不出时间。去年有过一段时间的集中学习&#xff0c;做了许多的练习和实验&#xff0c;并对基于HDevelop的形状匹配算法的参数优化进行了研究&#xff0c;写了一篇《基于HDevelop的形状匹配算法参数…

js 数组移除_2020前端面试--常见的js面试题

&#xff08;答案持续更新...&#xff09; 1.简述同步和异步的区别js是一门单线程语言&#xff0c;所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任务完成&#xff0c;再执行后面一个任务&#xf…

spring-自动加载配置文件\使用属性文件注入

在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.xml,需要引入一些依赖项: 1 <project xmlns"http://maven.apache.org/POM/4.0.0" x…

pygame碰撞检测

最近在学Pygame,花一段时间做了一个异常简陋版的"打砖块". 这次重点说一下困扰我比较长时间的碰撞检测(个人太菜..). 按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的…

2017-5-4 进程

进程&#xff1a;一个应用程序就是一个进程开启某个进程Process.Start("文件缩写名");通过绝对路径开启某个进程Process p new Process();p.StartInfo new ProcessStartInfo("要打开的程序绝对路径");p.Start(); 获取全部开启的进程&#xff1a;Process.…

很有用的cv牛人的网址和主要贡献

CV人物1&#xff1a;Jianbo Shi史建波毕业于UC Berkeley&#xff0c;导师是Jitendra Malik。其最有影响力的研究成果&#xff1a;图像分割。其于2000年在PAMI上多人合作发表"Noramlized cuts and image segmentation"。这是图像分割领域内最经典的算法。主页&#xf…

c++分治法求最大最小值实现_程序员:算法导论,分治法、归并排序,伪代码和Java实现...

分治法我们首先先介绍分治法。分治法的思想&#xff1a;将原问题分解为几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题&#xff0c;然后在合并这些子问题的解来解决原问题的解。还是拿扑克牌举例子&#xff0c;假设桌上有两堆牌面朝上的牌(牌面朝上&…

菜根谭#82

风来疏竹&#xff0c;风过而竹不留声&#xff1b;雁度寒潭&#xff0c;雁去而潭不留影&#xff1b;故君子事来而心始现&#xff0c;事去而心随空。 转载于:https://www.cnblogs.com/star4knight/p/3604403.html

解读ASP.NET 5 MVC6系列(9):日志框架

解读ASP.NET 5 & MVC6系列&#xff08;9&#xff09;&#xff1a;日志框架 原文:解读ASP.NET 5 & MVC6系列&#xff08;9&#xff09;&#xff1a;日志框架框架介绍 在之前的.NET中&#xff0c;微软还没有提供过像样的日志框架&#xff0c;目前能用的一些框架比如Log4N…

2017第18周四

继续加班中&#xff0c;很多事不如预期。时间花费很多但效果不成比例。越忙落下的事越多&#xff0c;有时候还需要让自己静下来想想&#xff0c;到底有什么是重要的。集中精力放在重要的哪些事&#xff0c;尽自己最大努力即可&#xff0c;尽最大努力即使没有达到也可以没有遗憾…