کلیدستان

نسخه‌ی کامل: سوال پردازش تصوير
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام مي خواهم تصويري به اندازه 1024*1024 پيكسل شامل 20نوار افقي و 20نوار عمودي با فواصل مساوي و هريك به عرض 15 پيكسل توليد كنم . از چه دستوري ؟ممنون[عکس: sleepy.gif]

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

http://www.kelidestan.com/forum/showthread.php?tid=3714
 
سلام
متاسفانه متوجه نشدم .
تصوير مورد نظر سياه سفيد است.
در همان ارسال گفته شده که چگونه می توانید ماتریس مربوط به عکس سیاه و سفید را بسازید. 
من براتون یک کد ساده می نویسم :

کد:
clear all
close all
clc

image_matrix=zeros(1024,1024);
for nn=1:8
    if (mod(nn,2)==0) % 128
        for mm=1:128
            image_matrix((nn-1)*128+mm,:)=1;
        end
    end
end

colormap(gray)
imagesc(image_matrix)

نتیجه اجرای کد متلب فوق، به صورت زیر می باشد :

 
از این کد الهام بگیرید و عکس مورد نظر خودتان را بسازید.
با تشكر از راهنمايي خوبتان
آيا با تغييراتي كه داده ام جواب سوالم درست است؟

کد:
clear all
close all
clc

f=zeros(1024,1024);
for n=1:40
    if(mod(n,2)==0)%25
        for m=1:25
            f((n-1)*25+m,:)=1;
        end
    end
end
for s=1:40
    if(mod(s,2)==0)%25
        for t=1:25
        f(:,(s-1)*25+t)=1;
    end
end
end
colormap(gray)
imagesc(f)
در ادیتور، یک دکمه برای درج کدها است، لطفا دفعه بعد از آن استفاده کنید. کدهای ارسال قبلتون رو ویرایش کردم. اجرای کدها، نتیجه زیر را می دهد :


نوارهای شروع و پایانی در جهت عمودی، دارای کمی برجستگی هستند. بررسی کنید ببینید مشکل از چیه. اگر شکل درست شد، دیگر نیازی به تایید نیست، مهم یافتن راهی برای تحقق شکل می باشد.
آيا اين درست تر است؟ البته كمي حروف در كپي جابجا شده . ممنون

کد:
f=zeros(1024,1024);
for m=1:20
    if(mod(m,2)==0)%15
        for n=1:15
            f((m-1)*15+n,:)=1;
        end
    end
end
for s=1:20
    if(mod(s,2)==0)%15
        for t=1:15
        f(:,(s-1)*15+t)=1;
    end
end
end
colormap(gray)
imagesc(f)
size(f)
قبلا تذکر دادم که لطفا کدها را با دکمه مخصوص درج کد، در ارسال قرار بدهید (من مجبور می شوم ارسال های شما را ویرایش کنم).
بهتر است به کسی که گفته این شکل را رسم کنید، مراجعه کنید و بگویید که شکل دقیقا باید به چه صورت باشد. من نمی دانم منظور از 20 نوار افقی و 20 نوار عمودی، دقیقا چه شکلی بوده است. تنها نحوه کشیدن نوارها را به شما گفتم.

شکل مربوط به کد شما، اینگونه است :


حال به فرد مورد نظر مراجعه کرده و از وی بپرسید که دقیقا نوارها باید به چه شکلی قرار بگیرند. 
مسلما شکل بالا مد نظرشون نبوده. کدها را بررسی کنید و ببینید در کجا اشتباه کرده اید (نوشتن کدها توسط من، هیچ سودی برای شما ندارد و دوست دارم که خودتان موفق به این کار شوید ).
سلام لطفا مشكل اجراي برنامه چيست ؟

کد:
function fazel arabi-tamrin-dsp(1)
close all;
i=input('Select Part (1 or 2):');
if i==1
    HW1();
elseif i==2
    HW2();
end                                                            
end
function HW1()
max=10;
n=-10:1:10;
x=zeros(1,length(n));
for i=1:length(n)
    x(i)=Delta(n(i))+4*Delta(n(i)-3)-2*Delta(n(i)+2)+2*Unit(n(i)+1)-3*Unit(-n(i)-2);
    if x(i)==inf
        x(i)=max;
    end
end
h = stem(n,x,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
title('X[n]');
end
function HW2()
n=-10:1:10;
max=5;
x=zeros(1,length(n));
x1=zeros(1,length(n));
x2=zeros(1,length(n));
x3=zeros(1,length(n));
for i=1:length(n)
    x(i)=3*Delta(n(i)-5)-Delta(n(i)-4)+4*Delta(n(i)-3)-2*Delta(n(i)-2)+3*Delta(n(i)-1)+4*Delta(n(i))+4*Delta(n(i)+1)-5*Delta(n(i)+2);
    if x(i)==inf
        x(i)=max;
    elseif x(i)==-inf
        x(i)=-max;
    end
end

for i=1:length(n)
    x1(i)=3*xfunc(2*n(i)-2)-2*xfunc(n(i)-3)+4*xfunc(n(i)+2)+xfunc(2*n(i))^2;
    if x1(i)==inf
        x1(i)=max;
    elseif x1(i)==-inf
        x1(i)=-max;
    end
end

for i=1:length(n)
    x2(i)=3*xfunc(-n(i))-2*xfunc(n(i)-3)+4*xfunc(-n(i)+2)+4*Delta(n(i)+2)-5*Unit(n(i)+1);
    if x2(i)==inf
        x2(i)=max;
    elseif x2(i)==-inf
        x2(i)=-max;
    end
end

for i=1:length(n)
    x3(i)=2*n(i)*xfunc(n(i))-2*exp(-0.4)*xfunc(n(i)-3)+2*cos(n(i))*xfunc(n(i)+2);
    if x3(i)==inf
        x3(i)=max;
    elseif x3(i)==-inf
        x3(i)=-max;
    end
end
subplot(2,2,1);
h = stem(n,x,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
title('x[n]');
subplot(2,2,2);
h = stem(n,x1,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
title('x_1[n]');
subplot(2,2,3);
h = stem(n,x2,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
title('x_2[n]');
subplot(2,2,4);
h = stem(n,x3,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
title('x_3[n]');
end
% fazel arabi
function u=Unit(t)
if(t>=0)
    u=1;
else
    u=0;
end
end
% % % % % % fazel arabi
function u=Delta(t)
if(t==0)
    u=1;
else
    u=0;
end
end
function x=xfunc(n)
    x=3*Delta(n-5)-Delta(n-4)+4*Delta(n-3)-2*Delta(n-2)+3*Delta(n-1)+4*Delta(n)+4*Delta(n+1)-5*Delta(n+2);
end
این طور که من متوجه شدم، این کدها، کدهای چند تابع می باشد. بنابراین برای پیدا کردن مشکل، ابتدا لطفا آنها را به صورت m-file (هر تابع به صورت یک m-file ذخیره می شود) ذخیره کنید و ضمیمه ارسال کنید و سپس نحوه ارجاع به توابع را هم بنویسید تا من ببینم مشکل از چیه.