用MATLAB分割图像,然后进行区域处理

用MATLAB分割图像,然后进行区域处理,第1张

clear all

clc

str='picturename'%这个地方改成你的图片的名称记得加上路径

img=imread([str,'.jpg'])%读图像

img=rgb2gray(img)%变成灰度图像

level = graythresh(img)

bw=im2bw(img,level)%变成二值话

[row col]=size(bw)

%完成二值化 下面是要找到分割的坐标 注意是在img 上进行分割 产生单独的图片保存出来 任务就完成了

%这个是分成列

result1=sum(bw,2)%对每行求和得到列向量

[val ind]=max(result1)%返回最大的和 的下标,ind 即为焊接缝隙

因为黑色是0 白色是1 所以对行求和最大的值出现的地方就是焊接的缝隙

有什么不懂的你可以回复我,祝好!

你需要先知道每一个O占的大小 比如占8*8个像素

SkipStep=8%每一个O的大小 和遍历的补偿

M=8

N=8

n=0%编号

I=imread('**.jpg')

I=rgb2gray(I)%灰度转化

[H,W]=size(I)

xStepNum = floor((W-N)/SkipStep+1)%朝负无穷方向取整 宽度方向block移动的次数

yStepNum = floor((H-M)/SkipStep+1)%朝负无穷方向取整 高度y方向移动的次数

for j=1:xStepNum%一列一列来取的

for m=1:yStepNum

n=n+1

PImg=I((m-1)*SkipStep+1:(m-1)*SkipStep+M,(k-1)*SkipStep+1:(k-1)*SkipStep+N)%分割图像

y='jpg'

w=strcat(n,'.',y)

imwrite(PImg,w)%保存分割出来的图片 格式为jpg 名字为编号n

end

end

但是这样也把不是O的取出来了,你可以知道没有O的地方的n 你到时候不用即可


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8047526.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存