如何使用 MATLAB 自动填充任意图像?

2024-01-02

这是基于此答案的进一步问题:

如何在 MATLAB 中实现鱼眼镜头效果(桶形变换)? https://stackoverflow.com/questions/2589851/how-can-i-implement-this-visual-effect-in-matlab/2589957#2589957

一般解决方案应该适用于所有背景颜色和长/宽比。


通常情况下,在 MATLAB 中可以通过多种不同的方法来执行此操作。我将列出一些填充示例RGB 图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-20224...

解决方案#1:添加填充CAT http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cat.html制作方形图像

该解决方案采用给定的颜色padColor并使用该函数复制它REPMAT http://www.mathworks.com/access/helpdesk/help/techdoc/ref/repmat.html创建正确尺寸、形状和颜色的填充。然后使用该函数将填充添加到图像的两侧CAT http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cat.html:

[r,c,d] = size(rgbImage);  %# Get the image dimensions
nPad = abs(c-r)/2;         %# The padding size
padColor = [1 1 1];        %# RGB triple for pad color (white)
padColor = reshape(padColor,1,1,3);  %# Reshape pad color to 1-by-1-by-3
if c > r                   %# Pad rows
  newImage = cat(1,repmat(padColor,floor(nPad),c),...  %# Top padding
                   rgbImage,...                        %# Image
                   repmat(padColor,ceil(nPad),c));     %# Bottom padding
elseif r > c               %# Pad columns
  newImage = cat(2,repmat(padColor,r,floor(nPad)),...  %# Left padding
                   rgbImage,...                        %# Image
                   repmat(padColor,r,ceil(nPad)));     %# Right padding
end

您可以修改上述解决方案以适用于indexed http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-17587, 灰度 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-13941, or 二值图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-33397通过替换定义的两行padColor与以下之一:

padColor = uint8(1);    %# For an indexed image (index of color to use)
padColor = uint8(255);  %# For a grayscale image (white)
padColor = true;        %# For a binary image (white)

解决方案#2:制作空白方形图像并插入原始图像

该解决方案采用给定的颜色padColor并使用该函数复制它REPMAT http://www.mathworks.com/access/helpdesk/help/techdoc/ref/repmat.html创建该颜色的空白方形图像。然后将原始图像插入到该空白图像的居中位置:

[r,c,d] = size(rgbImage);  %# Get the image dimensions
padColor = [1 1 1];        %# RGB triple for pad color (white)
padColor = reshape(padColor,1,1,3);  %# Reshape pad color to 1-by-1-by-3
if c > r                   %# Pad rows
  newImage = repmat(padColor,c);  %# Make c-by-c-by-3 matrix of given color
  rowIndex = floor((c-r)/2);      %# Row index for inserting image
  newImage(rowIndex+(1:r),:,:) = rgbImage;     %# Insert the image
elseif r > c               %# Pad columns
  newImage = repmat(padColor,r);  %# Make r-by-r-by-3 matrix of given color
  columnIndex = floor((r-c)/2);   %# Column index for inserting image
  newImage(:,columnIndex+(1:c),:) = rgbImage;  %# Insert the image
end

您可以修改上述解决方案以适用于indexed http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-17587, 灰度 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-13941, or 二值图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-33397通过替换定义的两行padColor与以下之一:

padColor = uint8(1);    %# For an indexed image (index of color to use)
padColor = uint8(255);  %# For a grayscale image (white)
padColor = true;        %# For a binary image (white)

解决方案#3:使用PADARRAY http://www.mathworks.com/access/helpdesk/help/toolbox/images/padarray.html

该解决方案使用该功能PADARRAY http://www.mathworks.com/access/helpdesk/help/toolbox/images/padarray.html创建填充以使图像成为正方形。不幸的是,没有简单的方法来指定您想要的填充颜色RGB 图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-20224使用此解决方案时(见下文)。但是,您可以使用'replicate'论点有PADARRAY http://www.mathworks.com/access/helpdesk/help/toolbox/images/padarray.html只需在添加填充的图像边缘复制颜色:

[r,c,d] = size(rgbImage);  %# Get the image dimensions
nPad = abs(c-r)/2;         %# The padding size
if c > r                   %# Pad rows
  newImage = padarray(rgbImage,[floor(nPad) 0],...  %# Pad top
                      'replicate','pre');
  newImage = padarray(newImage,[ceil(nPad) 0],...   %# Pad bottom
                      'replicate','post');
elseif r > c               %# Pad columns
  newImage = padarray(rgbImage,[0 floor(nPad)],...  %# Pad left
                      'replicate','pre');
  newImage = padarray(newImage,[0 ceil(nPad)],...   %# Pad right
                      'replicate','post');
end

该解决方案适用于indexed http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-17587, 灰度 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-13941, or 二值图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-33397。对于这三种图像类型,您可以选择替换'replicate'带有要用于填充的标量值的参数(即uint8(255)用于灰度图像中的白色填充)。为了RGB 图像 http://www.mathworks.com/access/helpdesk/help/toolbox/images/f14-13543.html#f14-20224,替换'replicate'具有单个值的参数将只允许您创建从白色到黑色的灰色阴影(即,1创建白色填充)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 MATLAB 自动填充任意图像? 的相关文章

  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • 如何使用 python 测量骨架长度的想法

    After applying skeletonization http scikit image org docs dev auto examples plot skeleton html on an image 我想使用 python 测
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • Pytorch RuntimeError:张量 a (4) 的大小必须与非单维 0 处张量 b (3) 的大小匹配

    我使用的代码来自here https www learnopencv com image classification using transfer learning in pytorch 训练模型来预测印刷样式编号0 to 9 idx t
  • PHP 中的 imagecolortransparent 不起作用

    我想改变图像中的白色 http www arso gov si vreme napovedi 20in 20podatki radar gif http www arso gov si vreme napovedi 20in 20podat
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • 如何确定透视变换后的点在新图像平面中的位置?

    我使用 OpenCV Python Numpy 图像中有三个点 我知道这些点的确切位置 P1 P2 N1 我要将图像转换为另一个视图 例如 我将透视图转换为侧视图 如果这样做 我将无法获得图像平面中这三个点的确切位置 我应该以一种可以获得这
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 减少非常大图像的文件大小,而不改变图像尺寸

    考虑一个处理可能非常大的 PNG 文件上传的应用程序 所有上传的文件必须存储到磁盘以供以后检索 但是 PNG 文件的大小最大可达 30 MB 但磁盘存储限制规定每个文件的最大大小为 1 MB 问题是获取文件大小高达 30 MB 的输入 PN
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • 解决相关代码的低 FPS 问题以计算图像中的偏移

    我正在尝试使用相关性来跟踪对象 我在较大的图像中逐帧找到较小的补丁 为此 我发现补丁中的变化 并且相关性最大的地方 用新补丁更新补丁 我的代码是 cv Mat im float 2 imagePart out cv Mat im float
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b

随机推荐

  • 在 React 中强制重新加载 gif

    我有一个包含 3 个步骤的模态组件 在第一步中 我有一个没有循环的 gif 换句话说 gif 不是无限的 gif 当我打开模态并返回第一步时 我希望 gif 重新启动动画并仅循环一次 我的问题是 当我第一次显示 gif 时 浏览器下载 gi
  • EFCore 在 dbcontext 的生命周期内使用单个 dbconnect

    我正在使用 EF Core 将数据流式传输到后端数据库 我称之为SaveChanges对于添加到数据集中的每一定数量的新对象 我从 EFCore 调试日志中注意到 每次调用时它都会关闭连接并打开一个新连接SaveChanges Micros
  • Android可扩展列表:具有不同布局的组

    我想为每个组显示不同的子布局 例如 Override public View getChildView int groupPosition int childPosition boolean isLastChild View convert
  • @OnClick 在 ButterKnife 库的实现中不起作用

    OnClick在 ButterKnife 库的实现中不起作用 当我点击Button 什么也没有发生 这是我的完整代码 public class MainActivity extends ActionBarActivity InjectVie
  • CMake 在 Qt6 安装中找不到包

    我正在尝试通过 CMake 构建项目 并将环境变量 Qt6 DIR 设置为包含 Qt6Config cmake 的目录 然而 构建似乎无法在 Qt6 安装中找到它所需的任何其他依赖项 我不确定接下来需要做什么 我看到对其他可能的环境变量 如
  • Visual Studio 解决方案资源管理器锁定

    我在使用带有 TFS 的 Visual Studio 2005 时遇到问题 解决方案资源管理器有时会停止响应交互 相反 它会发出蜂鸣声 就像我试图单击一个可见模式对话框的父窗口一样 但没有一个 到目前为止 我发现要做的唯一一件事就是重新启动
  • unique_ptr 运算符=

    std unique ptr
  • 如何按降序打印频率?

    我已经看过其他类似的问题 但无法将答案应用到我的程序中 目前频率按升序打印 我该如何更改才能使其按降序打印 from sys import argv frequencies for ch in ABCDEFGHIJKLMNOPQRSTUVW
  • 为什么要用!!当将 int 转换为 bool 时?

    以这种方式将整数转换为布尔值的原因是什么 bool booleanValue integerValue 而不仅仅是 bool booleanValue integerValue 我所知道的是 在 VC 7 中后者会导致C4800警告 htt
  • swift 2 解析 facebook SDK ios 9

    我正在尝试通过 Facebook 登录用户 在以前的 swift 1 2 版本中 一切都工作得很好 但迁移后我似乎无法通过我的 FB 帐户登录 但仍然收到错误消息 canOpenURL 失败的 URL fbauth authorize cl
  • iOS 上出现 UnsatisfiedLinkError 但 Android 上没有,loadLibrary 总是成功

    我有一些 Java 和 C 代码 可以在两个平台上编译并构建本机库 我可以验证这些库是否包含我期望的功能 并且 Java 能够在 Android 和 iOS 上加载这些库 在 Android 上 一切顺利 没有崩溃 但在 iOS 上 我遇到
  • Discord 机器人“有时”无法显示表情

    作为一名法国昆特牌玩家 我构建了一个discord 机器人 使用node js 和discord js 来在您命名卡片时显示该卡片的信息 它使用一些自定义表情来显示它的某些部分 它在几周内运行良好 但最近有些卡片在被调用时不显示表情 我不知
  • wagon ssh / scp:没有可用于访问存储库的连接器...默认类型使用可用工厂 WagonRepositoryConnectorFactory

    这是 wagon ssh 2 10 的错误吗 什么可能有效 例如 Maven Wagon SSH 和 pom 设置的哪种组合可以恢复 Maven 3 0 5 和 wagon ssh 2 4 的行为 在我的 pom xml 中升级到 wago
  • R 脚本和库预加载?

    我创建了一个 R 脚本 它需要首先加载一些库 问题是脚本需要 1 6 秒才能完成计算 使用 Linux 命令 time 多次测量 而加载库只需要 0 7 秒 该脚本运行频率很高 因此库加载的延迟几乎占了实际工作量的80 有什么方法可以预加载
  • 为什么 Spring 报告工厂方法 arg 不明确?

    我正在尝试创建这个 bean
  • “docker images ls”有什么作用?

    我查阅了文档以了解命令之间的区别docker image 管理图像 和docker images 列出图像 所以第二个选项似乎是一个捷径docker image ls其中还列出了图像 我注意到的是 跑步时docker image ls or
  • 跨 Node.js 和 nginx 的身份验证

    由于我的大部分内容都是静态的 我计划让 nginx 来处理静态文件的服务 但静态内容也是私有的 不同的用户有不同的内容 应用程序本身是用node js express js编写的 我想知道我应该如何处理身份验证 授权 有没有什么 任何 ng
  • 在 Amazon EC2 中,如何将 EBS 卷复制到另一个用户?

    我已经使用我的亚马逊凭证创建了一个亚马逊 EBS 卷 我的客户向我提供了他的客户凭证 以便我为他创建一台 EC2 机器并附上我创建的磁盘 我该怎么做 如果重要的话我正在使用网络控制台 让我补充一点 当我在客户的帐户中创建卷并将快照 ID 设
  • 找不到“Google/Analytics.h”文件 - XCode 7

    我在将 Google Analytics SDK 集成到我的 iOS 项目中时遇到很多麻烦 我正在使用 XCode 7 并针对 iOS 7 使用 Swift 2 0 不过我可以让示例正常工作 尽管没有转换为 Swift 2 0 我尝试过通过
  • 如何使用 MATLAB 自动填充任意图像?

    这是基于此答案的进一步问题 如何在 MATLAB 中实现鱼眼镜头效果 桶形变换 https stackoverflow com questions 2589851 how can i implement this visual effect