主要内容

图像环行探测中景物体

Este ejemplo muestra cómo检测器automáticamente círculos u物体环行图像可视化器círculos检测器。

Paso 1: Cargar una imagen

美丽的图画plástico不同的颜色。Además我们的命运círculos我们的命运,我们的命运detección círculos:

  1. 不同的颜色,不同的对比相对于相同的颜色。我爱你,我爱你,我爱你,我爱你。我爱你,我爱你,我爱你,我爱你。

  2. 观察cómo赤潮(alguna de las fichas) están赤潮(unas sobre otras) cómo赤潮(están cerca y casi se tocan entre ella)。Los límites关于solapan的事物oclusión关于suelen的事物difíciles para la detección关于客体。

RGB = imread(“coloredChips.png”);imshow (rgb)

第2段:确定无线电间隔段círculos

无线电中间连线连线círculos使用连线función画直线.Dibuje una recta清醒的el diámetro近距离的una ficha。

D =抽线;

La longitude de La ROI de La recta es el diámetro de La ficha。Las fichas comunes tienen diámetros del intervalo de 40 a 50 píxeles。

pos = d.位置;diffPos = diff(pos);直径= hypot(diffPos(1),diffPos(2)))
直径= 45.3448

Paso 3: Intento inicial de encontrar círculos

脂肪酸的imfindcirclesBusca círculos con UN intervalo de收音机。布斯克círculos con radio en el intervalo de 20 a 25 píxeles。Antes de eso, una buena práctica consisten preguntarse si los客体son más claros o más oscuros que el fondo。Para responder esa pregunta,观察la versión en escala de grises de esta imagen。

Gray_image = rgb2gray(rgb);imshow (gray_image)

El fondo es bastante claro y la mayoría de las fichas son más oscuras que El fondo。罪恶禁运,形式上的预先决定,imfindcirclesEncuentra objects circulares que son más claros que el fondo。Por lo tanto, establlezca el parámetro "ObjectPolarity" en "dark" enimfindcirclesPara buscar círculos oscuros。

[centers,radii] = imfindcircles(rgb,[20 25],“ObjectPolarity”“黑暗”
中心=[]半径= []

遵守“薪俸法”中心y半径Están vacías,没有什么值得我们珍惜的ningún círculo。我要继承你的遗产imfindcircleses联合国探测器De círculos y, De forma similar a la mayoría De los detecres,imfindcircles这个人Umbral de detección内在的决定是感性的。决定的方式,决定的方式的意义detección (de círculos)决定的方式的方式detección有效霉素imfindcirclestiene un parámetro“灵敏度”在本影内部,连续的,算法的灵敏度。Un valor de "Sensitivity" más alto establece Un umbral de detección más bajo y lleva a detectar más círculos。与此类似的感知控制,侦测,行动,利用,系统,系统doméstica。

第4段:感知力detección

幻想的力量,可能的力量,感觉的力量,决定的力量círculos estén本影的力量,激励的力量detectó ningún círculo。形式上的预先决定,“敏感性”,0 y 1, está establecido en 0.85。Aumente“敏感度”为0.9。

[centers,radii] = imfindcircles(rgb,[20 25],“ObjectPolarity”“黑暗”...“敏感”, 0.9)
中心=8×2146.1895 198.5824 328.8132 135.5883 130.3134 43.8039 175.2698 297.0583 312.2831 192.3709 327.1316 297.0077 243.9893 166.4538 271.5873 280.8920
半径=8×123.1604 22.5710 22.9576 23.7356 22.9551 22.9995 22.9055 23.0298

En esta ocasión,imfindcirclesEncontró阿尔古诺斯círculos;奥乔,精确无误。中心连续性的las ubicaciones de los centros de los círculos y半径意大利收音机估计círculos。

第5节:Dibujar los círculos en la imagen

脂肪酸的viscirclesSe puede usar para dibujar círculos en la imagen。Las variables de salida中心y半径imfindcirclesSe pueden pasar directamente aviscircles

Imshow (rgb) h = viscircles(中心,半径);

Los centros de Los círculos无线电通讯员的正确之星和无线电通讯员的巧合。罪恶禁运,我不知道我有多邪恶。Pruebe a aumentar“敏感度”aún más, 0.92分。

[centers,radii] = imfindcircles(rgb,[20 25],“ObjectPolarity”“黑暗”...“敏感”, 0.92);长度(中心)
Ans = 16

Al aumentar“敏感性”se obtienen aún más círculos。Vuelva a representar esos círculos en la imagen。

删除(h)删除先前绘制的圆H = viscircles(中心,半径);

第6节:第二乐章método (de dos fases) para encontrar círculos

结果很重要。imfindcirclesTiene DOS métodos不同para encontrar círculos。祝你好运,祝你好运método预先决定,祝你幸福método deCodificación de fase, para detectar círculos。Hay otro método, conocido generalmente como método dedos fas, que está disponible enimfindcircles.使用el método de fases y muestre los resultados。

[centers,radii] = imfindcircles(rgb,[20 25],“ObjectPolarity”“黑暗”...“敏感”, 0.92,“方法”“二级”);删除(h) h = viscircles(中心,半径);

El método de dos fases detecta más círculos con una“灵敏度”de 0.92。总的来说,estos dos métodos儿子的补充,ya que tienen区别puntos fuertes。El método de codificación de suele ser más rápido y ligamente más resistance al ruido que El método de dos fases。罪恶的封锁,también“敏感”的必要之处más“敏感”之处número“检举”之处método“敏感”。Así, el método de codificación de fase también encuentra las mismas fichas si el nivel de“Sensitivity”se eleva más, por ejemplo, a 0.95。

[centers,radii] = imfindcircles(rgb,[20 25],“ObjectPolarity”“黑暗”...“敏感”, 0.95);删除(h) viscircles(中心、半径);

观察que ambos métodos deimfindcirclesentran con precisión视觉中心和可视无线电(ocultas)。

第7段:¿Por qué se siguen omitiendo algunos círculos?

观察último结果,好奇心imfindcircles没有意象的邂逅。这是一种无法与之形成鲜明对比的爱情。De hecho, parecen tener intensidades与las del fondo很相似。¿Es可能que las fichas amarillas no sean realmente "más oscuras" que el fondo, como se suponía?Para confirmarlo, musestre de nuevo la versión enescala de grises de esta imagen。

imshow (gray_image)

Paso 8: Encontrar los círculos“claros”de la imagen

Las fichas amarillas tienen casi la misma intensidad que el fondo, tal vez sean incluso más claras。Por lo tanto, para detectar las fichas amarillas, cambie "ObjectPolarity" a "bright"。

[centersBright,radiiBright] = imfindcircles(rgb,[20 25],...“ObjectPolarity”“光明”“敏感”, 0.92);

帕索9:Dibujar círculos“claros”con un色差

Dibuje los círculos克拉罗斯en un color diente cambiando el parámetro " color " enviscircles

imshow(rgb) hBright = viscircles(centersBright, radiiBright,“颜色”“b”);

观察“土生菲利亚的友谊”和“土生菲利亚的友谊”。Estas fichas amarillas resultan difíciles de encontrar porque nodestacan我和你在一起很愉快。

第10节:减少“边缘阈值”

Hay otro parámetro enimfindcirclesque puede resultar útil aquí, en concreto,“边缘阈值”。Para encontrar círculos,imfindcirclesSolo utilza los píxeles de borde de la imagen。Estos píxeles de borde son, en esencia, píxeles con un valor de gradiente alto。El parámetro“EdgeThreshold”controla cuán中音探访英勇的梯度píxel护卫者联合国píxel在边界和周围的区域cálculo。联合国英勇alto (mas目的地是1)帕埃斯特parametro独奏permitira, se incluyan洛杉矶誉为solidos(英勇de gradient mas中音部),mientras,联合国终于英勇(mas目的地是0)es mas permisivo e incluye incluso洛马斯誉为debiles(英勇de gradient mas浅滩)弗雷明。En el caso de la ficha amarilla que falta, puesto que el el contraste es bajo, se espera que algunos de los píxeles de límites (En la circunferencia de la ficha) tengan valores de梯度bajo。Por lo tanto, reduzca el parámetro "EdgeThreshold" para asegurarse de que la mayoría de los píxeles de borde de la ficha amarilla se incluye en el cálculo。

[centersBright,radiiBright,metricBright] = imfindcircles(rgb,[20 25],...“ObjectPolarity”“光明”“敏感”, 0.92,“EdgeThreshold”, 0.1);delete(hBright) hBright = viscircles(centersBright, radiiBright,“颜色”“b”);

帕索11:Dibujar juntos círculos“oscurros”y“claros”

Ahora,imfindcircles青翠的丛林。Dibuje estas fichas en azul, junto con las otras fichas que se encontraron antes (con“客体极性”establecido en“dark”)en rojo。

H = viscircles(中心,半径);

Se detectan todos los círculos。Una última indicación: debe observarse que, al cambiar los parámetros para que sean más agresivos en la detección, se pueden encontrar más círculos, pero también aumenta la probabilidad de detectar círculos falsos。Hay una compensación entre el número de círculos reales que se puede encontrar (tasa de detección) y el número de círculos falsos que se encuentra con ellos (tasa de falsas alarm)。

Disfrute encontrando círculos。

Consulte也

|

特马relacionados