题目:自定义一个用于比特平面分层的函数,给定一副8比特灰度图像(EXP3B.tif和EXP3C.tif),输出该图像第1阶至第8阶比特平面图像。

说明:函数模板为imageBit = myImageBitPlaneSlicing(img);其中,输入参数img为一幅m×n×1的8比特图像;输出参数imageBit为一个3维数组,即imageBit为一个m×n×i (i= 1, 2, …, 8)的矩阵,要求该矩阵的第i个通道上存储第i阶比特平面图像,其中最低阶比特平面为i = 1的比特平面。

实现思路:

像素是由比特组成的数字,一幅8比特图像可看为8个1比特图像组成,所以我们可以尝试将图像数据转化为二进制字符串,再来判断每个像素的二进制中的某位是否为1,对此做出相应的处理。

流程:

1. 将图像数据转为double类型的,这样比较节省储存空间

2. 获取图像的高r和宽c

3. 定义一个8层的 r X c的零矩阵,用于存放最后的结果

4. 将图像数据转换为8位的二进制字符串,便于判断位于第几比特平面

5. 将图像的二进制字符串矩阵转化为[r,c,8]的矩阵

6. 遍历每个像素点,取出矩阵中每个像素点的二进制数,并遍历二进制数的每一位的值,判断是否为1,若为1则赋值为1,否则赋值为0

7.依次输出每一层的图像

实现效果:

实现源代码:

function imageBit = myImageBitPlaneSlicing(img)

img = double(img);%将图像数据转为double类型的,这样比较节省储存空间

[r,c] = size(img)

imageBit = zeros(r,c,8);%定义一个8层的 r X c的零矩阵

img_bin = dec2bin(img,8);%将图像数据转换为二进制字符串,便于判断位于第几比特平面

[r1,c1] = size(img_bin)%此时矩阵的大小为[r * c,8]

img_bin = reshape(img_bin(:),r,c,c1);%将图像的二进制矩阵转化为[r,c,8]的矩阵

%[r,c,l] = size(img_bin)%此时大小为[r,c,8]

for i = 1 :r

for j = 1:c

temp = img_bin(i,j,:);%取出矩阵中每个像素点的二进制数

for k = 1:8

if isequal(temp(9-k),48)%int('1')=48,判断第k位二进制数是否为'1'

imageBit(i,j,k) = 0;

else

imageBit(i,j,k) = 1;

end

end

end

end

end

clc;

clear;

close all;

img1 = imread('EXP3B.tif');

imageBit1 = myImageBitPlaneSlicing(img1);

figure('name','比特平面分层 EXP3B.tif');

subplot(3,3,1);

imshow(img1);

title('原始图像:EXP3B.tif');

for i = 1:8

subplot(3,3,i 1);

imshow(imageBit1(:,:,i))

title(['第',num2str(i),'比特平面']);

end

来源:http://www.icode9.com/content-4-69501.html

比特平面重建图像matlab,matlab实现 图像的比特平面分层 代码相关推荐

  1. 【图像重建】基于matlab字典学习KSVD图像低秩重建【含Matlab源码 1762期】

    ⛄一.低秩稀疏图像重建简介 1 矩阵的低秩稀疏分解理论 从数学上讲, 矩阵的秩反应了矩阵的固有属性, 矩阵的低秩性是指矩阵的秩相对于矩阵的行数和列数而言很小.低秩矩阵稀疏分解模型是将已知矩阵M (M∈ ...

  2. 图像的读取 matlab,Matlab编程环境下图像的读取

    <Matlab编程环境下图像的读取>由会员分享,可在线阅读,更多相关<Matlab编程环境下图像的读取(7页珍藏版)>请在人人文库网上搜索. 1.实验一 Matlab编程环境下 ...

  3. matlab图像水印技术研究,动态图像数字水印matlab的实现开题报告.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 动态图像数字水印matlab的实现开题报告.doc ...

  4. 图像的 matlab代码,常用的一些图像处理Matlab源代码

    #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白噪声和椒盐噪声的影响 #6:采用二维中 ...

  5. MATLAB图形图像处理——图像灰度变换

    MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...

  6. 用Matlab编程实现图像的傅立叶变换和逆变换并显示出来

    用Matlab编程实现图像的傅立叶变换和逆变换并显示出来 % 用Matlab编程实现图像的傅立叶变换并显示出来 % 可进行傅立叶变换和逆变换恢复 clear all close all clc I=i ...

  7. matlab一般函数的绘制方法,基于MATLAB的函数图像绘制方法

    C DOI:10.16707~.cnki.fjpc.2017.01.084 E 晒 亍嚣 基于 MATLAB的函数图像绘制方法 张笑笑 一,童 键 z (1湖南省长沙市第一中学 湖南 长沙 410() ...

  8. Matlab数字图像处理——图像的空间变换

    Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...

  9. 【图像修复】基于matlab深度信息图像修复【含Matlab源码 2299期】

    ⛄一.深度信息图像修复简介 0 引言 图像修复是指对待修复图像中缺损的部分,利用已有的图像信息对缺损区域进行修复,是计算机图像和视觉中的研究热点之一.在图像修复领域,通常采用的是基于块的纹理合成的修复 ...

最新文章

  1. Android 7.0 源码分析项目一期竣工啦
  2. 基于京东手机销售数据用回归决策树预测价格
  3. mysql 有ntext_深入char、varchar、text和nchar、nvarchar、ntext的区别详解
  4. python的f-string 格式化字符串
  5. Linux 源码编译安装过程-以安装XZ解压为例
  6. pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一)
  7. 亚马逊出的平板电脑_亚马逊推出新款平板电脑,售价90美元
  8. struts入门实例
  9. excel单元格内回车换行
  10. 帝国插件自动采集文章主动推送给搜索引擎自动安装目录
  11. 敏捷迭代开发——Time-Boxing时间盒
  12. 来也科技收购Mindsay背后:新旧势力交锋智能自动化备受关注
  13. 重庆“易法院”上线 民众足不出户参与诉讼全过程
  14. 基于云的产品上线部署qqfarm
  15. 已解决:Failure to find com.oracle:ojdbc6:jar:11.2.0.4.0-atlassian-hosted
  16. 从零开始 教你如何搭建Discuz!4.1论坛(图)
  17. AXURE原型设计:数据可视化设计
  18. 编程读取Revit中材料的渲染属性
  19. 使用Java语言输出水仙花数,详细解答
  20. 宣传片拍摄过程详细解析

热门文章

  1. linux 限额系统,Linux中的磁盘限额点点滴滴
  2. 【硬刚大数据】2021年从零到大数据专家之数据仓库篇
  3. mysql全文索引定义语法分析器
  4. 分享内容至第三方应用(QQ,微信好友,朋友圈)
  5. 【优质推荐】RedisCluster集群模式深入分析
  6. 机器人足球仿真第二次作业
  7. 牛听听显示服务器正在升级,升级了牛听听读书牛3.0版本,陪着孩子玩的停不下来...
  8. 华为android能用几年,华为手机能用几年 一般智能手机能用多少年
  9. 洗衣服wash 题解
  10. 海岛大亨6(Tropico 6) for Mac v11 模拟经营类游戏中文版下载