15个经典面试问题及回答思路图片,使用Julia进行图像处理--使用形态学运算进行图像调整,准备面试需要注意哪些问题

收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

正文

使用以下代码通过简单的灰度阈值来创建二进制图像,例如,如果像素值大于0.5,则分配1;如果像素值小于0.5,则分配0。

二进制和灰度图像不是完美的,因为它们可能包含许多缺陷,并且会被噪声或纹理扭曲。形态图像转换旨在通过使用图像的形式和结构来消除这些缺陷。这些操作仅依赖于像素值的相对顺序,而不依赖于它们的数值,它们被广泛用于标识和处理文本,文档以及其他形状,例如线条和框。

以下代码将演示如何创建阈值为0.5的二进制图像。首先加载图像并将简单的数学转换应用于图像的灰度版本:

using Images, ImageView, ImageMorphology

load an image

img = load(“sample-images/bird-3183441_640.jpg”);

convert image to grayscale and binarise the only channel

1. 将图像转换为灰度

2. 将所有大于0.5的值转换为true,而小于0.5的所有值转换为false

3. 通过将1乘以结果数组,它将true和false值转换为1或0

img_binary = 1 * (Gray.(img) .> 0.5);

二值图像

将转换为二值版本的图像与原始图像放在一起进行对比:

使用restrict函数缩放原始图像和二值图像

img = restrict(img)

img_binary = restrict(RGB.(Gray.(img_binary)))

使用size标识图像缩放版本的宽度

img_width = size(img, 2)

使用填充功能创建新图像,其宽度是原来的两倍

combined_image = fill(RGB4{Float32}(0.,0.,0.), size(img) .* (1, 2))

将图像放在一起进行对比

combined_image[:, 1:img_width] = img

combined_image[:, img_width+1:img_width*2] = img_binary

imshow(combined_image)

图像对比

形态学运算也可以应用于灰度图像。

基本运算


数学形态学是一组与图像的形状或特征有关的非线性运算和技术。图像形态学有两个基本要素:

  1. 二进制或灰度图像

  2. 结构元素

已经讨论了有关图像和配色方案的先决条件,但是结构元素是新的。结构元素通常是一个3x3二值块,可在图像上滑动并更新它。滑动结构元素可以实现两个基本操作:

  1. 图像侵蚀:从对象边界去除像素

  2. 图像膨胀:将像素添加到图像中对象的边界

ImageMorphology包进行的侵蚀和膨胀仅支持3x3结构元素。 3×3正方形是用于形态学运算的最流行的结构元素。较大的结构元素会产生更极端的侵蚀或膨胀效果,通常通过多次重复3x3结构元素运算获得相似的结果。

图像侵蚀

图像侵蚀是数学形态学领域的两个基本运算符之一。侵蚀是缩小图像前景或1值对象的过程。它可以平滑对象边界并去除小物体。

为了了解图像侵蚀的工作方式,首先在包含白噪声的简单图像上进行尝试,然后继续比较将其应用于照片的二值和灰度版本时的结果。

使用侵蚀分离物体

对于此任务,使用如下图片。它具有许多不同的连接图形,并且两侧都添加了噪声:

geometrical_image

从加载图像并将其转换为灰度开始:

using Images, ImageView, ImageMorphology

geom_img = load(“pictures/geometrical-figures-and-noise.jpg”);

geom_img_binary = Gray.(Gray.(geom_img) .> 0.5);#keeps white objects white

接下来,应用erode函数来进行转换:

geom_img_binary_e = erode(geom_img_binary)

imshow(geom_img_binary_e)

以下结果图像将显示在屏幕上。能够看到噪音大大减少并且对象分离得到改善:

erode_image_1

一次运行侵蚀功能并不能完全消除噪音,它使对象保持连接。运行erode函数数次查看结果:

geom_img_binary_e = erode(erode(geom_img_binary_e))

geom_img_binary_e = erode(erode(geom_img_binary_e))

imshow(geom_img_binary_e)

erode_image_5

准备用于文本识别的图像

将图像侵蚀应用于真实照片,将车牌上的字母和数字与其余内容分开:

车牌示例

首先加载图像,然后创建一个二进制版本,然后多次应用erode函数并比较结果:

using Images, ImageView, ImageMorphology

carplate_img = load(“pictures/caribbean-2726429_640.jpg”)

carplate_img_binary = Gray.(Gray.(carplate_img) .< 0.5);

converts black objects to white and vice-versa

carplate_img_binary_e = erode(carplate_img_binary)

imshow(carplate_img_binary)

carplate_img_binary_e = erode(erode(carplate_img_binary_e))

imshow(carplate_img_binary_e)

三次侵蚀图像的结果。图像上没有其他文字,并且车牌清晰。可以用于文本识别任务:

在侵蚀结果

图像膨胀

膨胀是形态学领域中的另一个基本操作。图像膨胀是逐渐扩大前景像素区域的边界或1值对象的大小的过程。因此,前景像素的区域会增大尺寸,平滑对象边界并封闭对象之间的孔和间隙。

合并几乎连接的对象

同样使用在使用侵蚀分离物体部分中使用的图片。它具有许多不同的连接图形,并且两侧都添加了噪声:

geomtrical_image

首先删除几何对象之间的间隙和孔,并使用以下代码比较一次运行膨胀函数一次和三次的情况:

using Images, ImageView, ImageMorphology

geom_img = load(“pictures/geometrical-figures-and-noise.jpg”);

geom_img_binary = Gray.(1 * Gray.(geom_img) .> 0.5);

geom_img_binary_d = dilate(geom_img_binary)

imshow(geom_img_binary_d)

geom_img_binary_d = dilate(dilate(geom_img_binary_d))

imshow(geom_img_binary_d)

可以看到三次膨胀后图形之间的重叠增加了很多,并且右侧的噪点变成了单个对象。

dilate_image

突出显示细节

尝试将膨胀函数应用于带有车牌的图像。如果侵蚀功能已将车牌字母和数字分开,则膨胀将扩展每个对象的边界:

using Images, ImageView, ImageMorphology

carplate_img = load(“pictures/caribbean-2726429_640.jpg”)

carplate_img_binary = Gray.(Gray.(carplate_img) .< 0.5)

carplate_img_binary_d = dilate(carplate_img_binary)

imshow(carplate_img_binary_d)

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
VpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
[外链图片转存中…(img-xekBNRHN-1713860436156)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值