آموزش گام به گام پردازش سیگنال و تصویر در نرم افزار متلب

رتبه: 0 ار 0 رای sssss
پردازش تصویر متلب
نویسنده: تیم تولید محتوا زمان مطالعه 2 دقیقه
Banner Image

در این مطلب مطالبی کاربردی راجب موضوع پردازش سیگنال و پردازش تصویر در نرم افزار متلب را به شما آموزش می دهیم. اگر سوالی در این زمینه دارید در بخش نظرات مطرح نمایید.

  • محاسبه چرخشی سری x و y با استفاده از سری فوریه

% use the Fourier convolution thm

z = real( ifft( fft(x).*fft(y) ) );

  • نمایش نتیجه fft با فرکانس صفر

x = peaks(256);

imagesc( real( fftshift( fft2(x) ) ) );

  • تغییر سایز یک تصویر

[p,q] = size(M); % the original image

[X,Y] = meshgrid( (0:p-1)/(p-1), (0:q-1)/(q-1) );

% new sampling location

[XI,YI] = meshgrid( (0:p1-1)/(p1-1) , (0:q1-1)/(q1-1) );

M1 = interp2( X,Y, M, XI,YI ,’cubic’); % the new image

حتما بخوانید: آموزش گام به گام Array در متلب به زبان کاملا ساده

  • ساخت واریانس تک بعدی

x = -1/2:1/(n-1):1/2;

f = exp( -(x.ˆ۲)/(۲*sˆ۲) );

f = f / sum(sum(f));

  • ساخت واریانس دو بعدی

x = -1/2:1/(n-1):1/2;

[Y,X] = meshgrid(x,x);

f = exp( -(X.ˆ۲+Y.ˆ۲)/(۲*sˆ۲) );

f = f / sum(f(:));

  • انجام یک سری تک بعدی برای سیگنال f و با فیلتر سیگنال h

n = length(x); p = length(h);

if mod(p,2)==1

d1 = (p-1)/2; d2 = (p-1)/2;

else

d1 = p/2-1; d2 = p/2;

end

xx = [ x(d1:-1:1); x; x(end:-1:end-d2+1) ];

y = conv(xx,h);

y = y( (2*d1+1):(2*d1+n) );

حتما بخوانید: آموزش انواع داده ها در متلب به زبان کاملا ساده

  • مشابه عملیات قبلی برای دو بعدی

n = length(x); p = length(h);

if mod(p,2)==1

d1 = (p-1)/2; d2 = (p-1)/2;

else

d1 = p/2-1; d2 = p/2;

end

xx = [ x(d1:-1:1,:); x; x(end:-1:end-d2+1,:) ];

xx = [ xx(:,d1:-1:1), xx, xx(:,end:-1:end-d2+1) ];

y = conv2(xx,h);

y = y( (2*d1+1):(2*d1+n), (2*d1+1):(2*d1+n) );

  • استخراج تصویر منحنی های سطح صفر

c = contourc(M,[0,0]);

k = 0; p = 1;

while p < size(c, 2) % parse the result

lc = c(2,p); % length of the curve

cc = c(:,(p+1):(p+lc));

p = p+lc+1;

k = k+1;

c listk = cc;

end

  • محاسبه سریع انتگرال منحنی دو بعدی

curve is assumed in [0, 1]2)

cs = c*(n-1) + 1; % scale to [1,n]

I = round(cs);

J = sub2ind(size(M), I(1,:),I(2,:) );

y = sum(M(J));

  • ترسیم یک دیسک و یک مربع

n = 100; x = -1:2/(n-1):1;

[Y,X] = meshgrid(x,x);

c = [0,0]; r = 0.4; % center and radius of the disk

D = (X-c(1)).ˆ۲ + (Y-c(2)).ˆ۲ < rˆ۲;

imagesc(D); % a disk

C = max(abs(X-c(1)),abs(Y-c(2)))<r;

imagesc(C); % a square

  • ترسیم یک تابع دو بعدی

(x,y).

n = 400;

x = rand(n,1); y = rand(n,1);

% this is an example of surface

z = cos(pi*x) .* cos(pi*y);

چرب زبان

متلب رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، حل ساده سخت ترین پروژه ها، شبیه سازیها و مسائل، فوق العاده پولساز، خرید و دانلود!

tri = delaunay(x,y); % build a Delaunay triangulation

trisurf(tri,x,y,z);

  • تولید یک سیگنال بر اساس Sobolev

alpha = 2; n = 100;

y = randn(n,1); % gaussian noise

fy = fft(y);

fy = fftshift(fy);

% filter the noise with |omega|ˆ-alpha

h = (-n/2+1):(n/2);

h = (abs(h)+1).ˆ(-alpha-0.5);

fy = fy.*h’;

fy = fftshift(fy);

y = real( ifft(fy) );

y = (y-min(y))/(max(y)-min(y));

حتما بخوانید: کجا و به چه دلیل باید از نرم افزار متلب استفاده کنیم یا نکنیم؟

  • تولید یک سیگنال بر اساس ۱/۲٫

alpha = 3; n = 300;

x = rand(n,1); % uniform noise

for i=1:alpha % integrate the noise alpha times

x = cumsum(x – mean(x));

end

  • محاسبه PSNR بین دو سیگنال x , y

d = mean( mean( (x-y).ˆ۲ ) );

m = max( max(x(:)),max(y(:)) );

PSNR = 10*log10( m/d );

  • محاسبه اسپیلاین مکعب با مقدار t

x = abs(t) ;

I12 = (x>1)&(x<=2); I01 = (x<=1);

y = I01.*( 2/3-x.ˆ۲٫*(۱-x/2) ) + I12.*( 1/6*(2-x).ˆ۳ );

  • بررسی طیفی سیگنال x

n = length(x); n0 = (n-1)/2;

f = fft(x); % forward transform

f = p/n*[f(1:n0+1); zeros(p-n,1); f(n0+2:n)];

x = real( ifft(f) ); % backward transform

  • محاسب خطای محاسبات تقریبی fm

% as an example we take the decomposition in the cosine basis

M = 500;

x = peaks(128); y = dct(x); % a sample function

[tmp,I] = sort(abs(y(:)));

y(I(1:end-M)) = 0;

err = norm(y,’fro’)/norm(x,’fro’); % the relative error xx = idct(y); imagesc(xx); % the reconstructed function

  • تبدیل نوع فرمت تصاویر

bs = 8; % size of the blocks

n = size(x,1); y = zeros(n,n);

nb = n/bs; % n must be a multiple of bs

for i=1:nb for j=1:nb

xsel = ((i-1)*bs+1):(i*bs); ysel = ((j-1)*bs+1):(j*bs);

y(xsel,ysel) = dct(x(xsel,ysel));

end end

  • انجام عملیات روی بخشی از تصویر بصورت تعاملی

[n,p] = size(M);

imagesc(M);

axis image; axis off;

sp = getrect;

sp(1) = max(floor(sp(1)),1); % xmin sp(2) = max(floor(sp(2)),1); % ymin

sp(3) = min(ceil(sp(1)+sp(3)),p); % xmax sp(4) = min(ceil(sp(2)+sp(4)),n); % ymax

MM = M(sp(2):sp(4), sp(1):sp(3));

نظریه گراف

  • محاسبه کوتاه ترین مسیر بین هر جفت گره

adjacency matrix).

% non connected vectices must have Inf value

N = length(D);

for k=1:N

D = min(D,repmat(D(:,k),[1 N])+repmat(D(k,:),[N 1]));

end

D1 = D;

  • تبدیل مثلث به ماتریس

nvert = max(max(face));

nface = length(face);

A = zeros(nvert);

for i=1:nface

A(face(i,1),face(i,2)) = 1; A(face(i,2),face(i,3)) = 1;

A(face(i,3),face(i,1)) = 1;

% make sure that all edges are symmetric

A(face(i,2),face(i,1)) = 1; A(face(i,3),face(i,2)) = 1;

A(face(i,1),face(i,3)) = 1;

end

profile name
تیم تولید محتوا

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش گام به گام پردازش سیگنال و تصویر در نرم افزار متلب»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید