Questions tagged «matlab»

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

7
在图像中找到正方形
我需要使用OpenCV在图像中找到正方形(在matlab或其他任何问题上都没问题,通常我期望的是一些想法)。 考虑下面的测试图像: 我需要在上面的图像中准确找到那些彩色的正方形(而不是白色的长条)。 我做了什么 : 我应用了通用方法(OpenCV样本随附),即在所有颜色平面中找到轮廓,对其进行近似并检查元素数= 4。它在某种程度上可以检测到很少的正方形,尤其是暗的正方形。 我要做的下一步是预测。即这种安排是固定的。因此,如果获得一些,我可以预测剩余的。它还可以进一步扩展。但是准确性非常差。 但是我觉得这里的预测不是一个好方法,并且它并不总是提供第一步所给出的准确答案。 我需要的 : 1)还有其他更好的方法可以更准确地检测这些正方形吗?还是多种方法? 重要的一点是,时间在这里不是问题。算法可能很慢,没关系。但是准确性是主要标准。 有时,图像可能更加模糊。 我面临的主要问题之一是某些正方形的颜色与背景颜色几乎相似(请检查第3列的第一和第二个正方形)。 寻找想法,在此先感谢 更新: 以下是我得到的最大准确结果: 当然,结果图像的大小会有所调整。 更新2: 我在下面的答案中给出了更好的解决方案:https : //dsp.stackexchange.com/a/7526/818

5
在此示例中,用于文档图像阈值处理的最佳算法是什么?
我正在尝试对所示图像实施各种二值化算法: 这是代码: clc; clear; x=imread('n2.jpg'); %load original image %现在我们调整图像的大小,以便以后的计算工作变得更容易。 size(x); x=imresize(x,[500 800]); figure; imshow(x); title('original image'); z=rgb2hsv(x); %extract the value part of hsv plane v=z(:,:,3); v=imadjust(v); 现在,我们找到了niblack和%sauvola算法所需的均值和标准差 m = mean(v(:)) s=std(v(:)) k=-.4; value=m+ k*s; temp=v; %实现niblack阈值算法: for p=1:1:500 for q=1:1:800 pixel=temp(p,q); if(pixel>value) temp(p,q)=1; else temp(p,q)=0; end end end figure; imshow(temp); …

2
MATLAB的filtfilt有什么优势
MATLAB filtfilt进行向前-向后过滤,即过滤,反转信号,再次过滤然后再次反转。显然这样做是为了减少相位滞后?使用这种过滤的优缺点是什么(我想这会导致过滤顺序的有效增加)。 使用filtfilt始终代替filter(即,仅前向过滤)会更好吗?是否有任何应用程序需要使用它,而不应该使用它?
30 matlab  filters  theory 

4
如何推断一维信号?
我有一个长度一定的信号,例如1000个样本。我想将此信号扩展到5000个采样,并以与原始采样率相同的速率采样(即,我想预测如果继续采样较长时间,信号将是什么)。信号由加在一起的几个正弦波分量组成。 我首先想到的方法是获取整个FFT,然后对其进行扩展,但这会在帧1001处留下非常强的不连续性。我还考虑过仅使用峰值附近的频谱部分,尽管这似乎可以在某种程度上改善信号,在我看来似乎并不能保证相位是正确的。扩展此信号的最佳方法是什么? 这是一些MATLAB代码,展示了我想要的理想方法。当然,我不会事先知道确切有3个正弦波分量,也没有确切的相位和频率。我要确保函数是连续的,在移至501点时没有跳跃, vals = 1:50; signal = 100+5*sin(vals/3.7+.3)+3*sin(vals/1.3+.1)+2*sin(vals/34.7+.7); % This is the measured signal % Note, the real signal will have noise and not be known exactly. output_vals = 1:200; output_signal = 100+5*sin(output_vals/3.7+.3)+3*sin(output_vals/1.3+.1)+2*sin(output_vals/34.7+.7); % This is the output signal figure; plot(output_signal); hold all; plot(signal); 基本上,给定绿线,我想找到蓝线。
25 matlab  sampling 

3
他们如何为旧的黑白电影上色?
这个问题在dsp.SE上,因为我对信号处理部分最感兴趣。 印度电影Mughal-e-Azam于1960年发行,黑白相间,2004年以彩色复制。 他们如何完美地为每个像素着色? 他们使用了什么技术来识别每个像素的颜色位置? 看电影的屏幕截图之一: 我有一张爱因斯坦黑白照片要着色。怎么可能不知道他当时穿的衣服以及衣服,背景等的实际颜色是什么。
22 matlab 

3
级联双二阶部分以实现高阶滤波器的工作原理?
我正在尝试实现8阶IIR滤波器,并且我阅读的每个应用笔记和教科书都说,最好将2阶以上的任何滤波器实现为二阶部分。我tf2sos在MATLAB中使用了二阶部分的系数,这与我预期的4个二阶部分的6x4系数有关。在实施为SOS之前,八阶滤波器需要存储7个先前的采样值(以及输出值)。现在,当实现为二阶部分时,流程如何从输入到输出工作,我是否仅需要存储2个先前的样本值?还是第一个滤波器的输出馈x_in入第二个滤波器,依此类推?
20 filters  filter-design  infinite-impulse-response  biquad  audio  image-processing  distance-metrics  algorithms  interpolation  audio  hardware  performance  sampling  computer-vision  dsp-core  music  frequency-spectrum  matlab  power-spectral-density  filter-design  ica  source-separation  fourier-transform  fourier-transform  sampling  bandpass  audio  algorithms  edge-detection  filters  computer-vision  stereo-vision  filters  finite-impulse-response  infinite-impulse-response  image-processing  blur  impulse-response  state-space  linear-systems  dft  floating-point  software-implementation  oscillator  matched-filter  digital-communications  digital-communications  deconvolution  continuous-signals  discrete-signals  transfer-function  image-processing  computer-vision  3d 

3
帮助了解霍夫变换
我正在尝试让霍夫(Hough)变换在MATLAB中工作,但出现了问题。我有一个非常糟糕的方法来检测需要修复的峰,但是在此之前,我需要能够反转霍夫变换以再次正确地创建线条。这是我现在得到的东西类型: 看起来好像旋转了90度,但我不确定为什么。我不确定是因为我在霍夫(Hough)空间错了,还是因为我取消了霍夫(Hough)并划清界限的方式。还可以有人帮助改善我的峰值检测吗?代码中使用的图像在这里 %% load a sample image; convert to grayscale; convert to binary %create 'x' image (works well) a = eye(255); b = flipud(eye(255)); x = a + b; x(128,128) = 1; %image = rgb2gray(imread('up.png')) < 255; %image = rgb2gray(imread('hexagon.png')) < 255; %image = rgb2gray(imread('traingle.png')) < 255; %%% these work …

5
如何消除图像中的眩光和亮度(图像预处理)?
我有一张图片 有什么办法可以消除亮点?请帮忙谢谢 编辑: 使用高斯运算后,再使用imagesc显示后,将获得以下输出,该输出清楚地显示了亮红色的斑点如何去除它们 红色频道: 绿色通道: 蓝色频道: 编辑2: 使用Gabor滤波器进行缺陷检测 其直方图: 如何自适应地计算其适当的阈值?

2
调整图像大小如何影响固有相机矩阵?
我有一个相机矩阵(我知道内在参数和外在参数),其尺寸为HxW。(我将此矩阵用于所需的一些计算)。 我想使用较小的图像,例如:H2×W2H2×W2\frac{H}{2}\times \frac{W}{2}(原件的一半)。为了保持相同的关系,我需要对矩阵进行哪些更改? 我有KKK作为内在参数,(RRR,TTT旋转和平移) cam=K⋅[RT]cam=K⋅[RT]\text{cam} = K \cdot [R T] K=⎛⎝⎜ax000ay0u0v01⎞⎠⎟K=(ax0u00ayv0001)K = \left( \begin{array}&a_x &0 &u_0\\0 &a_y &v_0 \\ 0 &0 &1\end{array} \right) KKK为3 * 3,我想乘上axaxa_x,ayaya_y,u0u0u_0和v0v0v_0 0.5(图像大小被调整的因素),但我不知道。

2
在嘈杂的图像数据中检测圆
我有一张看起来像下面的图像: 我试图找到圆的半径(或直径)。我尝试使用圆形Hough变换(通过matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')),并拟合到圆形或椭圆形(自制函数,对于噪声较小的数据效果很好,请参见下文)。 我还尝试了一些图像处理以获得更清晰的圆圈,例如,请参见下文: se = strel('disk', 2); bw = imdilate(bw, se); bw = bwareaopen(bw,100000); bw = edge(bw); 但是,当我将处理后的图像馈给这两种技术(霍夫和圆\椭圆拟合)时,它们都无法以体面的方式检测到圆。 这是我写的寻圈器的代码片段(matlab)[row col] = find(bw); 等高线= bwtraceboundary(bw,row(1),col(1)],'N',连接性,num_points); x = contour(:,2); y = contour(:,1); % solve for parameters a, b, and c in the least-squares sense by % using the backslash operator …

5
在非常基本的方面进行平滑处理的是什么
什么是平滑,我该怎么做? 我在Matlab中有一个数组,它是语音信号的幅度谱(FFT的128点的幅度)。如何使用移动平均线对此进行平滑?据我了解,我应该采用一定数量的元素的窗口大小,取平均值,这将成为新的第一个元素。然后将窗口向右移动一个元素,取平均值即成为第二个元素,依此类推。那真的是这样吗?我不确定自己,因为如果这样做,最终结果将少于128个元素。那么它是如何工作的以及如何帮助平滑数据点呢?还是有其他方法可以使数据平滑? 编辑:链接到后续问题


3
Gabor过滤器可以用于检测汽车凹痕吗?
我正在研究用于检测汽车凹痕的Gabor过滤器。我知道Gabor过滤器已广泛用于模式识别,指纹识别等。 我有一张图片。 使用MathWorks File Exchange网站上的一些代码,我得到了以下输出。 在某种程度上,这不是人们期望的输出。这不是一个好结果。 我的脚本如下: I = imread('dent.jpg'); I = rgb2gray(I); [G, gabout] = gaborfilter1(I, 2, 4, 16, pi/2); figure imshow(uint8(gabout)); 编辑:对下面的图像应用不同的代码: 经过gabor滤镜的不同方向输出图像: 我如何隔离被正确检测到的这个DENT?

2
如何在没有freqz函数的MATLAB中手动绘制带通Butterworth滤波器的频率响应?
我有如下代码,将带通滤波器应用于信号。我是DSP的新手,我想在继续之前先了解幕后情况。 要做到这一点,我想知道如何绘制滤波器的频率响应不使用freqz。 [b, a] = butter(order, [flo fhi]); filtered_signal = filter(b, a, unfiltered_signal) 鉴于输出,[b, a]我将如何做?这似乎是一个简单的任务,但是我很难在文档或在线中找到所需的内容。 我还想了解如何尽快执行此操作,例如使用fft或其他快速算法。

3
在Matlab中设计巴特沃斯滤波器,并获得作为在线Verilog HDL代码生成器的整数的滤波器[ab]系数
我使用Matlab设计了一个非常简单的低通巴特沃斯滤波器。以下代码段演示了我所做的事情。 fs = 2.1e6; flow = 44 * 1000; fNorm = flow / (fs / 2); [b,a] = butter(10, fNorm, 'low'); 在[b,a]中存储滤波器系数。我想以整数形式获取[b,a],以便可以使用在线HDL代码生成器在Verilog中生成代码。 Matlab [b,a]的值似乎太小,无法与在线代码生成器一起使用(服务器端Perl脚本拒绝使用系数生成代码),我想知道是否有可能获得[b,a] a]的形式可以用作适当的输入。 我在Matlab中获得的a系数为: 1.0000 -9.1585 37.7780 -92.4225 148.5066 -163.7596 125.5009 -66.0030 22.7969 -4.6694 0.4307 我在Matlab中得到的b系数是: 1.0167e-012 1.0167e-011 4.5752e-011 1.2201e-010 2.1351e-010 2.5621e-010 2.1351e-010 1.2201e-010 4.5752e-011 1.0167e-011 1.0167e-012 使用在线生成器,我想设计一个具有12位位宽和I或II过滤器形式的过滤器。我不知道上面链接中的“小数位”是什么意思。 …
15 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.