我的一位生物学家朋友问我是否可以帮他制作一个程序来计算蜥蜴的鳞片(这是正确的翻译?).
他给我发了一些图片,我在Matlab上尝试了一些东西.对于某些图像,它比其他图像更难,例如当存在较暗(黑色)区域时.至少用我的方法.我相信我可以在这里得到一些有用的帮助.我应该如何改进?我采取了正确的方法吗?
这些是一些图像.
通过使用MATLAB跟踪图像处理和计数,我得到了最好的结果.它基本上将图像转换为黑白图像然后将其阈值化.但我确实增加了一点侵蚀.
这是代码:
img0=imread('C:...\pic.png');
img1=rgb2gray(img0);
%The output image BW replaces all pixels in the input image with luminance greater than level with the value 1 (white) and replaces all other pixels with the value 0 (black). Specify level in the range [0,1].
img2=im2bw(img1,0.65);%(img1,graythresh(img1));
imshow(img2)
figure;
%erode
se = strel('line',6,0);
img2 = imerode(img2,se);
se = strel('line',6,90);
img2 = imerode(img2,se);
imshow(img2)
figure;
imshow(img1, 'InitialMag', 'fit')
% Make a truecolor all-green image. I …
Run Code Online (Sandbox Code Playgroud) algorithm matlab image-processing image-segmentation mathematical-morphology
我有一张有许多凹槽的表面的照片.在大多数情况下,开槽的边缘形成平行线,因此Canny和Hough变换非常适合检测线条并进行一些表征.然而,在几个地方,开槽受损并且边缘不再平行.
我正在寻找一种简单的方法来检查某条边是否是一条直线,或者是否有直线的间隙或偏差.我在想线性插值中的R平方参数,但在这里我需要一个更依赖于位置的参数.你有什么其他的方法来表征边缘吗?
我附上了canny边缘检测后的切槽图片.这里,边缘是直线,开槽很好.不幸的是,我无法访问目前损坏的切槽图片.但是,在切槽损坏的图片中,线条会有较大的间隙(至少为图片尺寸的10%)或不平行.
当我使用canny edge算法时,它会产生与预期的粗色线相对的2条边,但我只想显示一条边以便使我的线和曲线检测算法更简单,任何关于我如何能够的想法让这种情况发生?
这是代码:
bool CannyEdgeDetection(DataStructure& col)
{
Mat src, src_gray;
Mat dst, detected_edges, fin;
int WhiteCount = 0, BCount = 0;
char szFil1[32] = "ocv.bmp";
char szFil2[32] = "dst.bmp";
src = imread(szFil1);
dst = imread(szFil1);
blur( src_gray, detected_edges, Size(3,3) );
Canny( src, dst, 100, 200, 3 );
imwrite(szFil2, dst );
IplImage* img = cvLoadImage(szFil2);
int height = img->height;
int width = img->width;
int step = img->widthStep;
int channels = img->nChannels;
uchar * datau = (uchar *)img->imageData;
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){ …
Run Code Online (Sandbox Code Playgroud) c++ opencv image-processing edge-detection mathematical-morphology
我无法实现灰度图像的正确分割:
基本的事实,即我希望细分看起来像是这样的:
我对圈内的三个组成部分最感兴趣.因此,正如您所看到的,我想将顶部图像分成三个部分:两个半圆,以及它们之间的矩形.
我尝试了各种扩张,侵蚀和重建的组合,以及各种聚类算法,包括k-means,isodata和高斯混合 - 所有这些都取得了不同程度的成功.
任何建议,将不胜感激.
编辑:这是我能够获得的最佳结果.这是使用活动轮廓来分割圆形ROI,然后应用等数据聚类获得的:
这有两个问题:
matlab image-processing morphological-analysis image-segmentation mathematical-morphology
我经常在MATLAB中处理多个项目,并且每次访问的项目都有一组文件.打开所有项目的所有文件会导致工作区中出现大量混乱.人们可以通过对接来完成一组文件,这是众所周知的.有没有办法选项卡项目,或者有多个MATLAB编辑器(每个项目)打开,每个项目都有多个选项卡(包含项目文件).这个问题也可以在这里找到.同样,还有其他代码编辑器可用于执行相同的操作吗?
Project1
file 1.m
file 2.m
file 3.m
file 4.m
Project2
file 1.m
file 2.m
file 3.m
file 4.m
Run Code Online (Sandbox Code Playgroud)
可以在同一个窗口中,也可以在不同的窗口中.