

初学者进行数字图像处理,进行练习以识别图片中图形的形状,颜色,位置,区域,周长
基本思想: 首先,对图像进行裁剪,增强等操作,以使图片成为简单的二进制图像.

下一步提取图像边缘
图像处理后,您可以找到质心并进行标记,使用HOUGH变换检测直线,使用圆的周长和面积之间的关系确定它是否是一个圆,然后找到圆周,面积,RGB等. p>
所有代码附在下面,欢迎大家一起学习讨论!

f=imread('C:\Users\QHJ\Desktop\demo.png');
f=f(:,:,3);
f=histeq(f,256); %增强对比度
f=im2bw(f,0.386);
rowhigh=102+276-1; %提取有用部分
colhigh=193+277-1;
f=f(102:rowhigh,193:colhigh);
se=strel('square',14); %开闭运算
fo=imopen(f,se);
f2=imclose(fo,se);
f2=~f2;
imshow(f2);
g=edge(f2,'sobel',0.47);
[B,L] = bwboundaries(f2,'noholes');
hold on
for k = 1:length(B) % 标记边界
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2)
end
hold on
[L1,n]=bwlabel(g); %标定质心
ff=imread('C:\Users\QHJ\Desktop\demo.png');
for k=1:n
[r,c]=find(L1==k);
rbar=mean(r);
cbar=mean(c);
plot(cbar,rbar,'Marker','*','MarkerEdgecolor','blue');
fprintf('行坐标为%9.2f , ',cbar)
fprintf('列坐标为%9.2f\n',rbar);
rgb=ff(floor(cbar)+193,floor(rbar)+102,:) %读取RGB值
end
axis on,axis normal;
[H,theta,rho]=hough(g);%判断直线
peak=houghpeaks(H,11);
lines=houghlines(g,theta,rho,peak,'FillGap',10,'MinLength',31);%
hold on
for k=1:length(lines)
xy=[lines(k).point1;lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2.5,'Color','blue');
end
l=regionprops(L,'Perimeter','Area'); %求周长,面积
l.Perimeter
l.Area
stats = regionprops(L,'Area','Centroid','Perimeter');
threshold = 0.95;
for k = 1:length(B)
boundary = B{k};
area = stats(k).Area;
%perimeter=stats(k).Perimeter;
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2))); %利用4pi*面积/周长^2=1判断圆
metric = 4*pi*area/perimeter^2;
metric_string = sprintf('%2.2f',metric) ;
text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','g',...
'FontSize',14,'FontWeight','bold');
if metric > threshold
centroid = stats(k).Centroid;
text(centroid(1)-10,centroid(2)-10,'圆','Color','b','FontSize',10,'FontWeight','bold');
end
end

运行结果图图象识别,并判断未制作椭圆. . . .

[图像处理] Sobel边缘检测算法
完成时间: 2017/1/23我的实现结果如下: (图1是原始图像,图2是边缘检测结果)关于Sobel运算符(英文部分来自Wikipedia
Matlab中的自定义函数(1)

作为出生于程序员的Matlab学习者,无法定义函数简直无法忍受! !最重要的事情!定义函数时,它通常非常迷人并且无法使用
Matlab数字图像处理(1)基本操作
1.1 MATLAB图像处理的基本操作对于本文中的大多数操作,它是数字图像处理领域中最著名的“ lena”图片. 原始图片如下(图
在Matlab中使用轮廓函数(绘制轮廓线)
原始轮廓矩阵的轮廓图全页折叠语法轮廓(Z)轮廓(Z,n)轮廓(Z,v)轮廓(X,Y,Z)轮廓(X图象识别,Y,Z,n)轮廓( X,Y,Z,v)con
在Matlab中使用regionprops的示例
有一幅这样的图片,我们想要获得连接区域,我们可以使用以下代码: src_img_name ='blue_sky_white_clound_002594.jpg'; img = imread(src
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-283429-1.html
表明美国的死党已经不听他的话了
那中国的现代级和旅沪级旅海级岂不更老
也许是随意惯了