تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 13

نام تاپيک: پردازش تصوير

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2006
    پست ها
    24

    پيش فرض پردازش تصوير

    سلام من يك سوال دارم .
    همونطور كه مي دونيد يه عكس با پسوند tif يه فايل كه فقط شامل يك سري عدد . حالا من مي خوام از اين همه عدد پشت سر هم عكس رو توليد كنم يا به زبون ديگه عكس رو displayكنم . كي كد اين كار رو به زبان C# بلده؟

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    متوجه منظورتون نشدم. بيشتر توضيح بديد.
    ميخوايد از يك Stream تصوير توليد كنيد؟
    يا فقط مي خوايد يك تصوير tif رو نشون بديد؟

  3. #3
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2006
    پست ها
    24

    پيش فرض

    سلامي
    ببين نشون دادن يه Stream . يعني فكر كن يه سري عدد پشت سر هم كه تشكيل يه عكس رو مي ده داخل يه فايلي به نام img.tif
    ذخيره شده و من ميخوام اين عدد ها ر بخونم و عكسي كه نشون دهنده اين اعداد روي صفحه نمايش نشون بدم .

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    میتونید از stream ها در #C استفاده کنید. ولی باید با ساختار tif آشنا باشید.
    باید بدونید که Header فایل رو چطور بنویسید تنها کافی نیست که یک سری عدد رو به ترتیب
    پشت هم قرار بدید. باید از Codec خاصی استفاده کنید. چقدر آشنا هستید؟
    تا حالا یه فایل bmp نوشتید؟

  5. #5
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2006
    پست ها
    24

    پيش فرض

    ببينيد من در اين مورد اصلا اطلاعات خاصي ندارم.
    ولي كاري كه مي خوام انجام بشه دقيقا اينه. يك فايل دارم كه پر از داده است . به اسم test.dat يك فايل پر از عدد . اصلا ديگه با tiff كاري ندارم. مي دونم كه اعدادي كه در اين فايل ذخيره شده هر كدوم نشون دهنده يك رنگ . مي خوام عكسي كه از اين اعداد به دست مي آد رو نشون بدم. ببينيد كد اين برنامه در دلفي مي تونه به صورت زير باشه. من اين كد رو به c# مي خوام.
    var
    i,j:integer;
    colo : Byte;
    fp : file of Byte;

    begin
    assignfile(fp,Name);
    reset(fp);
    for i:=1 to 2048 do
    for j:=1 to 2048 do
    begin
    read(fp,colo);
    form1.image1.canvas.Pixels[j-1,i-1]:=RGB(colo,colo,colo);
    end;

    end

  6. #6
    داره خودمونی میشه mohseni12345's Avatar
    تاريخ عضويت
    Feb 2006
    پست ها
    196

    پيش فرض

    سلام.
    میتونید از stream ها در #C استفاده کنید. ولی باید با ساختار tif آشنا باشید.
    باید بدونید که Header فایل رو چطور بنویسید تنها کافی نیست که یک سری عدد رو به ترتیب
    پشت هم قرار بدید. باید از Codec خاصی استفاده کنید. چقدر آشنا هستید؟
    تا حالا یه فایل bmp نوشتید؟
    میشه در مورد codec و headr فایلها اموزشی چیزی بدی یا اینکه یه منبع معرفی کنی؟
    و اگه نمیشه پس خواهشا طریقه نوشتن فایل bmp رو بگو
    اخه من دارم روی پردازش تصویر کار میکنم و و اونا رو به ماتریس تبدیل می کنم و ویرایش لازم رو روش انجام میدم ولی در سیو کردنش مشکل دارم

  7. #7
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2006
    پست ها
    24

    پيش فرض

    ببین من یک کد برای کاری که می خوام انجام بدم نوشتم. این کد اجرا می شه و درست هم کار می کنه. فقط یکمی برنامه کند اجرا می شه. ببینید شما راه بهتری سراغ دارید .
    **************************************
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;

    namespace WindowsApplication29
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    protected override void OnPaint(PaintEventArgs e)
    {

    Rectangle rect = new Rectangle(0, 0, 2048, 2048);

    e.Graphics.DrawImage(ima.ime1.sjd(), rect);
    }
    }
    }

    namespace ima
    {
    class ime1
    {
    public static Bitmap sjd()
    {
    int j, c, l;
    l = 0;
    FileStream fs = File.Open("c:\\b1.dat", FileMode.Open);
    Bitmap res = new Bitmap(2048, 2048);
    Color cc;

    for (j = 0; j < 2048; j++)
    for (c = 0; c < 2048; c++)
    {
    int re = fs.ReadByte();
    cc = Color.FromArgb(re,re,re);
    res.SetPixel(c, j, cc);
    l++;
    }

    fs.Close();
    return res;


    }

    }

    }

  8. #8
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    میبخشید جواب دادنم طول کشیده. یه مقدار سرم شلوغه.
    برنامه تون خیلی خوب نوشته شده. کندی به خاطر اندازه ی تصویر هست و البته SetPixel یه مقدارکند هست.
    شما در برنامتون 2048*2048 بار از این تابع و ReadByte استفاده میکنید.
    من پیشنهاد میکنم که اول محتویات file تون رو در حافظه Buffer کنید بعد رو داده ها کار کنید.
    Last edited by someone; 16-12-2006 at 02:38.

  9. #9
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    میشه در مورد codec و headr فایلها اموزشی چیزی بدی یا اینکه یه منبع معرفی کنی؟
    و اگه نمیشه پس خواهشا طریقه نوشتن فایل bmp رو بگو
    اخه من دارم روی پردازش تصویر کار میکنم و و اونا رو به ماتریس تبدیل می کنم و ویرایش لازم رو روش انجام میدم ولی در سیو کردنش مشکل دارم

    سلام.
    سلام.
    یک فایل Bitmap شامل این قسمت ها هست :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بطور خلاصه وقتی می خواید یک Bitmap رو در حافظه load کنید مراحل به این شکل هست :
    اول به یک structure نیاز هست که BFH رو در خودش نگهداره این اطلاعات شاملfiletype, … filesize ,
    میشه.دوم به یک structure نیاز هست که اطلاعات تصویر رو در خودش نگه داره یعنی BIH
    این ساختار اطلاعاتی مثل width , height , bitCount,…. رو در خودش نگه داری میکنه.
    سوم اطلاعات مربوط به Palette هست و چهارم اطلاعات خود Bitmap
    حالا برای ذخیره کردن یک فایل Bitmap باید به همین شکل عمل بشه
    یعنی اول نوشتن data های مربوط به فایل (size , type) و بعد data مربوط به Bitmap
    (width,height,bitCount) و بعد نوشتن data های مربوط به Bitmap هست.
    البته باید در نظر داشته باشید که از چه offset ی شروع به نوشتن کنید.
    مثلا در Offset 0 به اندازه ی 2Bytes دو حرف B وM قرار میگیره و در Offset 2 که 4Bytes هست
    اندازه ی فایل (File Header) و .......
    در مورد Comprestion یا codec هم باید اضافه کنم معمولا از RLE استفاده میشه که در Offset 30 قرار داره.
    بحث خیلی مفصلی هست.
    اگه تحت Windows برنامه مینویسید می تونید از این دو structure استفاده کنید.
    BITMAPFILEHEADER
    BITMAPINFOHEADER
    در موردشون میتونید اطلاعات خوبی پیدا کنید.
    اگه با C# کار میکنید به راحتی میتونید از متود Save استفاده کنید که در کلاس Bitmap قرار داره.
    با چه زبانی کار میکنید و چه کامپایلری ؟

  10. #10
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2006
    پست ها
    24

    پيش فرض

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

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •