پردازش تصویر متلب

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

اساطیر زبان

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

  • محاسبه چرخشی سری 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);

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

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست