I_gray=rgb2gray(I); %原图像变为灰度图像 level=graythresh(I_gray); %计算图像I_gray的全局阈值,level为标准化灰度值,其范围为[0 1] [height,width] = size (I_gray); %计算灰度图像的长宽 I_bw=im2bw(I_gray,level); %im2bw使用阈值level将灰度图像转换为二值图像. figure( 2 );imshow(I_bw); %显示二值图像(背景为白色) for i = 1 :height %%循环中进行反色 for j = 1 :width if I_bw( i , j )== 1 I_bw( i , j )= 0 ; else I_bw( i , j )= 1 ; figure( 3 );imshow(I_bw); %显示取反后的二值图像(背景为黑色) [L,num] =bwlabel(I_bw, 8 ); %bwlabel标注二值图像I_bw中的目标物体,返回标识矩阵L和I_bw中目标物体的数量num,8表示连通数. plot_x= zeros ( 1 ,num); %%zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的横坐标 plot_y= zeros ( 1 ,num); %zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的纵坐标 for k= 1 :num %%num个区域依次统计质心位置 sum_x= 0 ; sum_y= 0 ; area= 0 ; %初始化 for i = 1 :height for j = 1 :width if L( i , j )==k sum_x=sum_x+ i ; %计算第K区域的横坐标总和 sum_y=sum_y+ j ; %计算第K区域的纵坐标总和 area=area+ 1 ; %计算第K区域的由多少个坐标点表示 plot_x(k)= fix (sum_x/area); %计算第K区域的质心横坐标 plot_y(k)= fix (sum_y/area); %计算第K区域的质心纵坐标 figure( 4 );imshow(I_bw); %显示取反后的二值图像(背景为黑色),并在图上标注质心点位置 for i = 1 :num hold on plot(plot_y( i ) ,plot_x( i ), '*' )

补充说明:plot_x, plot_y中记录了质心坐标信息,num代表了质心的个数

如图: 可以把图中三个黑圈的质心找出来代码大致如下:I=imread('d:\\测试2.bmp');%读取原图像figure(1);imshow(I);%显示原图像I_gray=rgb2gray(I);%原图像变为灰度图像level=graythresh(I_gray);%计算图像I_gray的全局阈值,level为标准化灰度值,其范围为[0 1][height,width]=size(I_ I_gray=imread('130.bmp'); level=graythresh(I_gray);  %% 二值化的阈值 [height,width]=size(I_gray); bw=im2bw(I_gray,level);    %%二值化 图像 figure I_gray=rgb2gray(I);%原 图像 变为灰度 图像 level=graythresh(I_gray);%计算 图像 I_gray的全局阈值,level为标准化灰度值,其范围为[0 1] [height,width]=size(I_gray);%计算灰度 图像 的长宽 I_bw=i...
【达摩老生出品,必属精品,亲测校正,质量保证】 资源名: MATLAB 目标跟踪_ matlab _目标检测_用 matlab 读取视频文件 图像 并对 图像 的运动目标检测_运动目标检测_视频 图像 资源类型: matlab 项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发人员
获取任意一张 图像 多个 矩阵图形的 质心 及其像素面积 // The “Square Detector” program. // It loads several images sequentially and tries to find squares in // each image #include “opencv2/core/core.hpp” #include “opencv2/imgpro...
所谓 质心 ,就是当密度作为像素点灰度值时的重心,例如其 质心 的x坐标为 x=∑j∗xi,j∑xi,j x=\dfrac{\sum_{}j*x_{i,j}}{\sum_{}x_{i,j}} x=∑​xi,j​∑​j∗xi,j​​ 最直观的方法就是下面的这种方式了。 %%通过 质心 算法找到img的 质心 位置 function [x,y] = oCenter(img) img = doub...
随着信息技术的不断发展, 数字 图像 处理技术越来越多地被应用在航空航天、 生物医学工程、工业检测、机器人视觉、军事制导和文化艺术等各个领域。 图像 处理日益成为一门引人注目、前景远大的学科,而 MATLAB 语言以强大的科学 运算、灵活程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言 便捷的接口功能,成为当今国际上科学界最具影响力、最有活力的软件。 MATLAB 又称矩阵实验室,其强大的矩阵运算能力是其它语言无法比拟的,而 矩阵运算正是 图像 处理的根本所在。因此,本文以 MATLAB 提供的图形用户界 面(GUI)为平台对 图像 处理系统进行设计。依据软件开发的设计原则, 确定了 设计的一般步骤,具体如下: (1)明确系统所要 实现 的主要功能,应该具有哪些模块。 (2)绘出基本的用户界面草图,并对其进行修改,最终确定一个方案。 (3)根据最终确定的方案,利用 MATLAB GUI 制作用户操作界面以及其 他菜单项目。 (4)编写界面及其菜单里的每个功能的回调程序, 并且逐项进行功能检测。 根据以上的步骤,首先利用 MATLAB 图形用户界面设计了该系统的静态界 面。
% 使用regionprops函数计算物体的 质心 stats = regionprops(bw_img, 'Centroid'); centroid1 = stats(1).Centroid; centroid2 = stats(2).Centroid; % 显示结果 imshow(img); hold on; plot(centroid1(1), centroid1(2), 'r*', 'MarkerSize', 10); plot(centroid2(1), centroid2(2), 'g*', 'MarkerSize', 10); 该代码将显示原始 图像 ,并在 图像 标记出两个物体的 质心