文章首发及后续更新:https://mwhls.top/2196.html
新的更新内容请到mwhls.top查看。
无图/无目录/格式错误/更多相关请到上方的文章首发页面查看。

目录
1. 目的
2. 原理
3. 实验结果
4. 代码

目的

  • 使用prewitt算子分割图像。

原理

  1. 使用prewitt算子找到图像边缘。
  2. 设定阈值,并根据阈值将边缘转化成二值数组。
  3. 将二值数组中值为1的像素以原灰度值显示,值为0的像素灰度值置0显示。
    • 注:因为选择的是白纸黑字的图像,所以边缘实际上就是图像前景,即黑字,因此可以省去后续补充边缘等处理。

实验结果

  • 比之前用p参数分割的效果更好一点。

    • 见:使用p参数对灰度图进行图像分割(Matlab)

代码

clear all;
ima = imread('2.jpg');
grayIma = rgb2gray(ima);
[height, width] = size(grayIma);
histArray = zeros(1, 256);
prewittOperatorX = ([-1 0 1;-1 0 1;-1 0 1;]);
prewittOperatorY = ([-1 -1 -1; 0 0 0; 1 1 1]);edgeArray = grayIma .* 0;%prewitt算子求边缘
for row = 2:height-1for col = 2:width-1temp = double(grayIma(row-1:row+1, col-1:col+1));tempX = prewittOperatorX .* temp;tempX = abs(sum(tempX(:)));tempY = prewittOperatorY .* temp;tempY = abs(sum(tempY(:)));edgeArray(row, col) = tempX + tempY;end
end%设定阈值,并根据阈值将边缘数组中小于阈值的部分,在二值数组中将其置1,其余置0。
thresholdValue = 250;
binaryArray = zeros(height, width);
for row = 2:height-1for col = 2:width-1if(edgeArray(row, col) < thresholdValue)binaryArray(row, col) = 1;endend
end%根据二值数组,将特定部分的像素显示。
resultIma = grayIma;
for row = 1:heightfor col = 1:widthresultIma(row, col) = grayIma(row, col) * binaryArray(row, col);end
endsubplot(1,2,1);
imshow(grayIma);
subplot(1,2,2);
imshow(resultIma);

使用prewitt算子分割白纸黑字图像(Matlab)相关推荐

  1. 【OpenCV】32 图像梯度–更多梯度算子(rober算子、prewitt算子)

    32 图像梯度–更多梯度算子(rober算子.prewitt算子) 代码 import cv2 as cv import numpy as npsrc = cv.imread("../ima ...

  2. dsp图像处理Prewitt算子边缘检测

    --(完整工程文件到我的资源下载) Prewitt算子边缘检测 一.实验背景与意义 图像处理就是对信息加工以满足人的视觉心理或应用需求的方法.图像处理的方法有光学方法和电子学方法.从20世纪60年代起 ...

  3. 图像边缘提取——梯度算子、Roberts算子、prewitt算子、Sobel算子、Kirsch算子、LOG算子的matlab实现

    #图像边缘提取-- ##梯度算子.Roberts算子.prewitt算子.Sobel算子.Kirsch算子.LOG算子的matlab实现 matlab代码 clear; f=rgb2gray(imre ...

  4. Halcon算子学习:图像阈值分割-threshold、binary_threshold、dyn_threshold算子

    Halcon算子学习:图像阈值分割算子 前言 1.threshold-全局固定阈值分割 2.Binary Threshold-自动全局阈值分割 3.dyn_threshold-局部动态阈值分割 小结: ...

  5. fcm脑图像分割matlab,MATLAB程序:用FCM分割脑图像

    MATLAB程序:用FCM分割脑图像 1. MATLAB程序 FCM_image_main.m function [accuracy,iter_FCM,run_time]=FCM_image_main ...

  6. 【数字图像处理】图像锐化:拉普拉斯算子(Laplacian)、高通滤波、Sobel算子、Isotropic算子、Prewitt算子

    图像锐化 图像锐化处理的目的是使模糊的图像变得更加清晰起来,通常针对引起图像模糊的原因而进行相应地锐化操作属于图像复原的内容.图像的模糊实质就是图像受到平均或积分运算造成的,因此可以对图像进行还原运算 ...

  7. [Python从零到壹] 五十七.图像增强及运算篇之图像锐化Roberts、Prewitt算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. 从零开始写一个图像处理程序之四(Prewitt 算子分析)

    上一篇: 从零开始写一个图像处理程序之三(卷积原理简介)_星空_MAX的博客-CSDN博客 具体看看卷积核为什么能够得到图像信息呢 先看Prewitt算子的结构 分别过滤出来横向边缘和纵向边缘: 拿G ...

  9. 【图像处理作业】用C语言对bmp图像使用中值滤波、Prewitt算子进行平滑、锐化操作

    相关原理 使用C语言打开8bit灰度图bmp文件并读出相应的每个像素亮度值,因为任何一个图像都可看成单个像素的组合.程序实现了1×1的图像和一个3×3的图像做卷积,并将结果输出成为新的bmp文件 平滑 ...

  10. matlab 图像语义分割,笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)...

    图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...

最新文章

  1. 避免在JSP中写java代码
  2. 【转】多线程Core Data
  3. Vue使用vue-pull-refresh插件实现下拉刷新
  4. 转 Struct 和 Union区别 以及 对内存对齐方式的说明
  5. 数据结构Java09【计算机中数据的存储原理、2-3树的插入原理、B树和B+树】
  6. php设置表单的字体,php表单标题怎么设置字体
  7. 非线性动力学_非线性动力学特辑 低维到高维的联通者
  8. 创建启动oracle快捷方式,GNOME3创建连接OracleFS管理软件启动快捷方式
  9. 安卓应用安全指南 5.2.3 权限和保护级别 高级话题
  10. ※部分VB文章汇总B※
  11. IBM Watson:好的AI能够在方方面面推动人类文明的发展
  12. mysql 性能指标计算_干货|MySQL 性能指标及计算方法总结
  13. Error: invalid operands (*UND* and *UND* sections) for `*‘
  14. Could not create the Java Virtual Machine
  15. -bash: vim: 未找到命令
  16. 阿基米德螺旋线原理及代码
  17. 技术选型Rust——事后分析
  18. 300元内,此耳机是首选。不亏千人好评,对的起你的耳朵。
  19. Maven五分钟入门
  20. 【操作系统概念-作业8】Main Memory

热门文章

  1. React脚手架配置代理解决跨域
  2. dnf全部使用_DNF的命令使用教学
  3. linux进程操作日志文件,我使用过的Linux命令之tailf - 跟踪日志文件/更好的tail -f版本...
  4. html视频文件哪种格式好,常见的视频格式有哪些?
  5. 黑马 Java八股文面试题视频教程,Java面试八股文宝典(框架篇)
  6. java int 转换成byte_Java如何将int转换为byte?
  7. 映美精工业相机与电脑通信及报错解决方案
  8. 170926_Spring Cloud 微服务实战(翟永超著) 读书笔记(三)_Eureka详解
  9. PRISM概率模型检测器初使用--骰子模型
  10. 文件共享锁溢出 请增加MaxLocksperFile注册表项值