Questions tagged «matlab»

MATLAB(MATrix LABoratory)是一种数值计算环境和第四代编程语言。请谨慎使用此标签。

6
不同材质的图像分割问题
嗨,简历/模式识别社区, 关于图像的分割,我遇到了一个严重的问题。场景是炉子里的气氛,使我发疯。而且我需要在短时间内(<10秒)而不是仅在一种特殊情况下检测不同材料(玻璃,陶瓷,Al,Ir ...)的物体轮廓。我还需要代码的连续像素行中的轮廓。因此,还需要使用链代码或所谓的边界/轮廓跟随,因此开孔不好。在背景中会不时出现非线性噪声,大约是灰尘,颗粒或其他一些东西。 欢迎使用Matlab或OpenCV建议。 为了更加清楚,我发布了目标的另一个图像和一个半透明的对象,还需要对其进行检测。还需要注意其他示例。 正如您在图像#1中看到的那样,图像的右侧部分和恒星的外轮廓附近(即物体)存在粒子。而且总体对比度不是很好。对象本身位于地下,与轮廓检测无关。图像#2显示了半透明的物体,这也是可能的。 我想找到该物体的轮廓/周长,就像在下一个屏幕(红线)上一样。两个矩形(黄色)标记了起点(左侧)和终点(右侧)。蓝线是可忽略的。 起初我以为我可以只用过滤器解决那种肮脏的气氛。但是经过大量的投入时间,我才意识到,为了提高前景和背景的对比度,我必须大幅度消除或减少噪音。我尝试了很多方法,例如直方图均衡,自适应Otsu均衡,线性滤波器(例如高斯),非线性滤波器(中值,扩散),活动轮廓,k均值,Fuzzy-c-means以及纯Canny边缘检测结合形态运算符。 坎尼:粒子和大气正在造成孔洞,但是我需要物体的完整轮廓。仍然以形态算子的闭合,扩张还不够好。由于滞后作用,Canny仍然是我研究过的所有方法中最好的结果。 活动轮廓线:它们也可以在边缘/渐变上工作,在对象内部初始化后它们的行为完全疯狂,这可能是由于边缘贴图导致“开放”对象引起的。据我所知,轮廓必须闭合。尝试了不同的衍生产品(GVF / VFC /经典蛇)。 k均值:由于有雾的背景,结果包括炉内气氛。对于模糊C均值也是如此。由于将对象与背景分离,我选择了两个群集。簇越多,结果越弱。 直方图/ Otsu:由于灰度强度非常接近(恕我直言!),它会将对象与背景合并。尝试使用本地和全局方法。 滤镜:尤其是GLPF或其他LPF会弄脏边缘,效果不是很好,甚至不会减少有雾的气氛。 非线性滤镜保留边缘。它们中的大多数都花很长时间计算大图像。现在使用快速双边过滤器。结果见下文。 因此,没有一种方法足以满足后处理步骤的需要,因为对象段的获得结果与现有算法的竞争性较差。该现有算法非常本地化,因此适用于这种非常特殊的情况。 所以我问你,如果我完全错过了什么...我不知道如何加工以及如何获得良好的轮廓结果而又没有间隙或孔。 CCD和物理环境?提前致谢! 到目前为止的最后一种方法(经过一整夜的MO实验): 双边过滤器(保留边缘,但平滑均匀区域) Canny(Sigma = 2,Threshold = [0.04 0.08]) 形态运算(MO): bwareopenclosing, remove和bridge bwlabel仅选择轮廓的周长,以消除不必要的噪音。尚无更新的屏幕截图,但适用于明星。玻璃杯有一个与外部轮廓相连的内部轮廓,也可以在下面的屏幕截图中看到。 因此,恐怕我需要一种特殊的算法来遍历外部轮廓。这将是对邻居的一些顺时针/逆时针查找。如果存在拐角,则可以切换顺时针/逆时针的步骤。如果有间隙,请增加半径并再次查看。如果存在以下两个或两个以上的观点,请选择与前一个观点相同的观点。您认为轮廓跟随算法有意义吗?

2
高通信号等于信号减去低通信号吗?
我的问题是,如果要高通信号,是否与低通信号并将其从信号中减去相同?理论上是一样的吗?几乎一样吗? 我已经搜索了(都在google和dsp.stackexchange上),但发现有冲突的答案。我一直在玩信号,这是结果。我对此不太了解。这是具有每四秒钟一次采样频率的信号。我设计了一个从0.8 mHz到1 mHz的过渡带的数字低通滤波器,并对信号进行了滤波。然后,我还设计了一个具有相同过渡带的高通滤波器,并对信号进行了滤波。这是结果。 第一张图片以黑色显示原始信号,以蓝色显示低通信号。它们几乎彼此叠在一起,但并不完全相同。红色曲线是信号减去高通信号,该信号就在信号顶部。 这第二张图片只是放大以显示正在发生的事情的第一张图片。在这里,我们可以清楚地看到两者并不相同。我的问题是为什么?是关于我如何实现两个过滤器的事情,还是与我的实现无关的理论上的事情?我对滤波器的设计并不了解很多,但是我确实知道这是违反直觉的。这是重现所有这些的完整MATLAB代码。我正在使用filtfilt命令消除相位延迟。但是,在此需要指出的另一点是,过滤器未进行标准化。当我做sum(Hd.Numerator)时,低通得到0.9930,高通得到0.007。我看不出如何解决这个问题。是否应该以某种方式缩放输出,因为系数不等于1?这种缩放可能与此有关吗? close all clear all clc data = dlmread('data.txt'); Fs = 0.25; % Sampling Frequency N = 2674; % Order Fpass = 0.8/1000; % Passband Frequency Fstop = 1/1000; % Stopband Frequency Wpass = 1; % Passband Weight Wstop = 1; % Stopband Weight dens …

2
如何计算噪声信号的SNR?
我在理解如何实际操作时遇到问题 我有一个包含纯语音的wav文件,另一个仅包含背景噪声的ave文件(可以是各种噪声,例如白噪声,人群噪声,吹来的风声等)。这些要么纯粹是言语,要么纯粹是噪音。因此,我想我可以通过两个文件中相应样本的简单划分(或样本帧的平均值)从它们获得SNR值。然后,我大胆地将它们组合起来以获得嘈杂的语音文件。我猜该文件将仍然具有相同的SNR。 现在,我将此文件通过降噪程序,并得到另一个文件。如何计算此“降噪”文件的SNR? -编辑- 后续问题在这里发布
14 matlab  snr 

2
如何更改公式以检测各个角度的条形码?-MATLAB
如何更改公式以检测各个角度的条形码? rgb = imread('barcode4.jpg'); % Resize Image rgb = imresize(rgb,0.33); figure(),imshow(rgb); % Convert from RGB to Gray Igray = double(rgb2gray(rgb)); % Calculate the Gradients [dIx, dIy] = gradient(Igray); B = abs(dIx) - abs(dIy); % Low-Pass Filtering H = fspecial('gaussian', 20, 10); C = imfilter(B, H); C = imclearborder(C); figure(),imagesc(C);colorbar

4
ICA-协方差矩阵的统计独立性和特征值
我目前正在使用Matlab创建不同的信号,通过将它们乘以混合矩阵A进行混合,然后尝试使用FastICA取回原始信号。 到目前为止,与原始信号相比,恢复的信号确实很差,这不是我所期望的。 我正在尝试查看我是否做错了什么。我正在生成的信号如下: s1 = (-x.^2 + 100*x + 500) / 3000; % quadratic s2 = exp(-x / 10); % -ve exponential s3 = (sin(x)+ 1) * 0.5; % sine s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth …

5
通过MATLAB代码进行压缩感测
我是压缩感测的新手。我阅读了R.Baranuik,Y.Eldar,Terence Tao等人的几篇论文。所有这些论文基本上都提供了其背后的数学细节,例如,稀疏性,RIP,L1范数最小化等。但是,任何人都可以提供MATLAB代码实现压缩感测? 在此先感谢您的帮助。


3
离散傅立叶变换:DC术语实际上是什么?
我目前正在玩Matlab中的离散傅立叶变换(DFT),以从图像中提取特征。我想完全理解我使用的概念。我已经阅读了几种解释,例如this,但是到目前为止,还没有真正解释“ DC术语”的含义。我所知道的是DFT的第一个术语可以写成: 这里 是旋转因子。 这意味着第一项(DC项)是一个没有频率的振幅。 有人可以解释为什么将其称为DC术语吗?它与“直流电”有什么关系?DC术语的相关性是什么?什么时候有用,又有什么用?
13 image  matlab  fft  dft 

3
图像处理编码
我想知道哪种图像处理是最好的语言?我知道MATLAB有一个很好的库和用户社区。我还没有检查出来,那里也有python。 最有效的语言是什么?

1
重建被叶子遮挡的树枝
在树枝的部分被树叶覆盖的树的照片中,人们将如何大致重构树枝? 我可以通过脱阈,然后以几个不同角度的线段打开来提取分支的可见部分。但是我该如何(大约)填充树叶所覆盖的空间? 假设我们从下面的树图开始: 将图像加载为灰度 uu = mmreadgray('tree2.jpg') 限制较深的颜色;转换为二进制;删除200px区域以下的连接区域 vv = mmareaopen(mmbinary(mmthreshad(mmneg(uu),200)),20) 用90、180、135和45度的10px线段打开vv;将这些图像加在一起形成标记图像zz zz = mmaddm(mmaddm(mmaddm(mmopen(vv,mmseline(10,90))),mmopen(vv,mmseline(10,180))),mmopen(vv,mmseline(10,135))),mmopen(vv,mmseline(10,135))),mmopen(vv,mmseline(10,135))),mmopen(vv,mmseline(10,135))),mmopen(vv, mmseline(10,45))) 从标记图像zz重建vv中可见的肢体部分 aa = mminfrec(zz,vv) 在原始图片uu上方显示结果aa;合理地提取四肢 mmshow(uu,aa) 对于现在如何大致重建整个肢体的任何想法,我将不胜感激。(或改进上述步骤)。谢谢!

2
检测织物图像中的纱线数量
我是图像处理的新手,并且正在一个项目中确定织物图像中纱线的数量,即经纱和纬纱(与x轴垂直和平行的纱线)。 我试图通过分别获取经线和纬线的列数和行数之和来检测纱线,但由于图像聚焦和清晰度不高,因此似乎不起作用。同样,该方法对织物中纱线的排列非常敏感。 如果可能,请提出一种更好的算法来检测纱线。同样,是否有可能使每个捕获的图像都变得笔直。我尝试了IMROTATE,但是它会在图像中创建黑色区域,这会干扰行的总数,并且算法会失败。 在这方面的任何帮助对我来说都是非常值得的。谢谢。

3
为什么我的阻带滤波器会衰减其他频率?
这是我的两色信号代码,其中我使用阻带去除较高的音调,然后在将信号与滤波器系数进行卷积后在频域中绘制前(蓝色)和后(红色) 。 如果将这段代码放入Matlab,您可以清楚地看到滤波器已成功去除了较高的频率,但是由于某种原因,较低频率的振幅已被减半,而我增加的滤波器系数也就越多,它越使我的整个曲线变得平坦,为什么会发生呢?以及如何防止阻带不向外传播?这是图像和代码: fSampling = 8000; tSampling = 1 / fSampling; t = 0:t采样:0.005; F0 = 1000; F1 = 3000; xt = sin(2 * pi * F0 * t)+ sin(2 * pi * F1 * t); ht = fir1(40,.25,'stop'); yt = conv(xt,ht); fAxis = -4000:125:4000-125; xF = fft(xt,64); MagXF = …
12 filters  matlab 

4
使用FFT有效计算自相关
我正在尝试在平台上计算自相关,其中我唯一可用的加速原语是(I)FFT。我有一个问题。 我在MATLAB中原型化了它。但是,我有点困惑。我以为它的工作原理如下(这是从内存中来的,如果我有一点错的话,我深表歉意)。 autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) ) 但是,我得到的结果不同于使用该xcorr函数得到的结果。现在,我完全期望不要获得自动相关的左侧(因为这是右侧的反映,因此无论如何都不需要)。但是,问题是我的右手侧似乎在中点附近反射。这实际上意味着我得到的数据量约为预期的一半。 因此,我敢肯定我一定在做一些非常简单的错误,但我只是不知道该怎么做。

5
使用互相关的示波器信号时延估计
我已经从显微镜上记录了2个信号。他们看起来像这样: 我想在Matlab中测量它们之间的时间延迟。每个信号有2000个采样,采样频率为2001000.5。 数据在csv文件中。这是我到目前为止所拥有的。 我从csv文件中删除了时间数据,以便csv文件中只有电压电平。 x1 = csvread('C://scope1.csv'); x2 = csvread('C://scope2.csv'); cc = xcorr(x1,x2); plot(cc); 这样得出的结果: 从我读过的书中,我需要对这些信号进行互相关,这应该给我一个与时间延迟有关的峰值。但是,当我对这些信号进行互相关时,会在2000年出现一个峰值,我知道这是不正确的。在互相关它们之前我应该​​对这些信号做什么?只是寻找一些方向。 编辑:删除直流偏移后,这是我现在得到的结果: 有没有一种方法可以解决此问题,以获得更明确的时间延迟? 编辑2:这是文件: http : //dl.dropbox.com/u/10147354/scope1col.csv http://dl.dropbox.com/u/10147354/scope2col.csv

3
数字滤波器中的滤波器系数代表什么?
我使用matlab的fdatool设计了一个数字滤波器,并从该工具获得了滤波器系数。 问题是我设计了一个四阶滤波器。这给了我5个过滤器值 h[] = {0.1930,0.2035,0.2071,0.2035,0.1930} x[k] = Discrete time input signal 现在继续使用公式 Output = h[k]*x[n-k]; 输出代表最终的滤波值,尽管结果很好,但我无法找出如何通过Matlab获得这些系数以及仅乘法(卷积)如何得出任何样本的最终滤波响应。 任何链接或解释都可以。我想知道滤波器系数计算的完整后端工作。 如果我不确定某个地方是否有疑问,请发表评论。 谢谢 :)
12 filters  matlab 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.