PDA

View Full Version : Image Recognition



LordMMD
جمعه 08 اسفند 1382, 00:34 صبح
سلام

آقا، شدیدا احتیاج به یک الگوریتم یا راهنمایی در مورد Image Recognition دارم .

میخوام بدونم که چطور میشه که در یک تصویر که مثلا چهار تا عکس گنجونده شده، چطور میشه این چهار تا عکس رو از هم تفکیک کرد و در فایلهای جدا گانه save کرد؟؟؟

به کوچکترین اطلاعات در این مورد نیازمندم!!!!!

*IsRaEl*
یک شنبه 24 اسفند 1382, 01:23 صبح
میخوام بدونم که چطور میشه که در یک تصویر که مثلا چهار تا عکس گنجونده شده، چطور میشه این چهار تا عکس رو از هم تفکیک کرد و در فایلهای جدا گانه save کرد؟؟؟

این عکسهایی که میخوای از هم تفکیک بشن بر چه اساسی مشخص میشن؟

LordMMD
سه شنبه 04 فروردین 1383, 15:05 عصر
این عکسها در حقیقت عسهایی هستند که با اسکنر اسکن شدن ، و پشت صحنه اونها سیاه هست(ولی نه سیاه مطلق، میدونی که!!!) و چون کار جدا سازی اونها با نرم افزارهایی مثل PhotoShop به صورت دستی انجام میشه ، من میخواستم که با این برنامه اون رو به صورت مکانیزه انجام بدم.

از توجه شما متشکرم

Kambiz
سه شنبه 04 فروردین 1383, 15:17 عصر
رو اینترنت بگرد دنبال Edge Detection

LordMMD
سه شنبه 04 فروردین 1383, 15:27 عصر
من خیلی درباره این مطلب جستجو کردم یه چیزهایی هم پیدا کردم و هنوز هم دارم میگردم، ولی چون زیاد در زمینه Image Processing آشنا نیستم، اگه یه بزرگواری پیدا بشه و به من کمک کنه خیلی ممنونش میشم

از راهنمایی شما متشکرم

Inprise
سه شنبه 04 فروردین 1383, 17:54 عصر
سلام ؛

این مبحث خیلی بزرگ و مفصله و حرف زدن در موردش بدون فراگیری پیش نیازها و بی برنامه نتیجه مفیدی نخواهد داشت . بهتره در راستای هدفی که داری از کلید واژه ها استفاده کنی و با جستجو اطلاعاتت رو بیشتر کنی و در مورد ابهامات یا مشکلات سوال بپرسی . این یه شروعه (http://prettyview.com/edge/)

<span dir=ltr>

An edge is not a physical entity, just like a shadow. It is where the picture ends and the wall starts. It is where the vertical and the horizontal surfaces of an object meet. It is what happens between a bright window and the darkness of the night. Simply speaking, it has no width. If there were sensor with infinitely small footprints and zero-width point spread functions, an edge would be recorded between pixels within in an image. In reality, what appears to be an edge from the distance may even contain other edges when looked close-up. The edge between a forest and a road in an aerial photo may not look like an edge any more in a image taken on the ground. In the ground image, edges may be found around each individual tree. If looked a few inches away from a tree, edges may be found within the texture on the bark of the tree. Edges are scale-dependent and an edge may contain other edges, but at a certain scale, an edge still has no width.
</span>

موفق باشی

امیر-نا
سه شنبه 04 فروردین 1383, 19:59 عصر
با سلام
البته من عددی نیستم که بخام صحبت بکنم ولی می تونین برای مطالعه در مورد Image Processing
از کتاب فارسی (( ماشین بینایی و اصول پردازش تصویر ترجمه: دکتر خلیل خلیلی انتشارات جهان نو)) استفاده کنین که مقدمه ای برای Image Processing و مباحثی که ویژه در کار Roboot و بینایی ربات هستند و تشخیص لبه هاو .......
در اون مطالعه کنین.


:|

masoode
شنبه 15 فروردین 1383, 09:55 صبح
یک کتاب که اسمش الأن یادم نیست (ولی تو مایه‌های پردازش تصویر) که نویسنده اون گنرالس است. این کتاب مرجع تمام پردازش تصویری ها است.

امیر-نا
شنبه 15 فروردین 1383, 23:21 عصر
بله فکر کنم منهم دیدم انگاری اسمش "اصول پردازش تصویر و................"
خیلی هم بزرگه و قطور.

ولی کتاب بالا "ماشین بینایی" هم زود مطلب رو گفته هم خیلی باحاله.

نمیدونم
:? :(

amirsadeghi
یک شنبه 09 اردیبهشت 1386, 19:22 عصر
حالا نمیشه شما که جستجو کردی اطلاعاتت رو در اختیار ما قرار بدی؟

MNosouhi
یک شنبه 09 اردیبهشت 1386, 21:33 عصر
با توجه به تیره بودن پشت زمینه و ابزارهایی که برای پردازش تصویر وجود داره ، نباید نوشتن چنین برنامه ای کار پیچیده ای باشه

ali_abbasi22145
دوشنبه 10 اردیبهشت 1386, 09:18 صبح
سلام
این مشکل شما با همکاری من و دوستان دیگر حل شده است و bug های آن را به کمک هم گرفته ایم و چندین ماه سر این مسله کار کردیم ....

MNosouhi
دوشنبه 10 اردیبهشت 1386, 10:36 صبح
این مشکل شما با همکاری من و دوستان دیگر حل شده است و bug های آن را به کمک هم گرفته ایم و چندین ماه سر این مسله کار کردیم ....
کجا این مسئله رو مطرح کردید؟
لطفا بیشتر توضیح بدید.

ali_abbasi22145
دوشنبه 10 اردیبهشت 1386, 10:55 صبح
کجا این مسئله رو مطرح کردید؟
لطفا بیشتر توضیح بدید.

جایی مطرح نکردیم بلکه خودم این مورد را می خواستم و حلش کردیم.

MNosouhi
دوشنبه 10 اردیبهشت 1386, 23:34 عصر
جایی مطرح نکردیم بلکه خودم این مورد را می خواستم و حلش کردیم.
امکانش هست که یه نمونه با سورس بگزارید؟

مصطفی ساتکی
سه شنبه 11 اردیبهشت 1386, 06:38 صبح
در مورد پردازش تصویر می تونم کمکتون کنم

amirsadeghi
سه شنبه 11 اردیبهشت 1386, 09:50 صبح
از الگوریتم Chain Code استفاده کن

MNosouhi
سه شنبه 11 اردیبهشت 1386, 12:16 عصر
از الگوریتم Chain Code استفاده کن
شما در چند پست این آلگوریتم رو پیشنهاد داده بودید ، در صورت امکان کمی در مورد آن توضیح دهید.

amirsadeghi
چهارشنبه 12 اردیبهشت 1386, 00:40 صبح
در گوگل سرچ کن منابع بسیار خوبی پیدا می کنی

ali_abbasi22145
پنج شنبه 13 اردیبهشت 1386, 12:31 عصر
سلام
به زودی exe کامل برنامه را اینجا می گذارم.

amirsadeghi
پنج شنبه 13 اردیبهشت 1386, 14:17 عصر
فایل اجرایی به چه درد بچه ها می خوره
بچه ها می خوان کد ها رو بررسی کنن یاد بگیرن
فکر می کنم باز هم گوگل

MNosouhi
پنج شنبه 13 اردیبهشت 1386, 14:55 عصر
سلام
به زودی exe کامل برنامه را اینجا می گذارم.
البته اگر نمونه کد باشه که بهتره ، اما همون فایل اجرایی هم میتونه ایده بده.

فایل اجرایی به چه درد بچه ها می خوره
بچه ها می خوان کد ها رو بررسی کنن یاد بگیرن
فکر می کنم باز هم گوگل
به هر حال آقای عباسی دارن یه کار میکنن .
شما هم اگه واقعا میخای کمک کنید ، به جای اینکه دائم کلمه code chain و google رو تبلیغ کنید سعی کنید به صورت عملی وارد کار بشید .

amirsadeghi
پنج شنبه 13 اردیبهشت 1386, 14:58 عصر
تبلیغ نیست پیشنهاد راه حله و ایده میده
از فایل اجرایی برای بررسی کد که بهتره

ali_abbasi22145
شنبه 15 اردیبهشت 1386, 10:13 صبح
سلام
این هم exe و تست کنید اگر باگی هم دیدید که یک SHEET_PHOTO را جداسازی نکرد آن SHEET_PHOTO را به من email کنید.
خیلی خوشحال می شوم تا باگ احتمالی را هم حل کنم .

MNosouhi
یک شنبه 16 اردیبهشت 1386, 09:33 صبح
ممکنه در مورد الگوریتمی که استفاده کرده اید توضیح دهید ، بخصوص برای اون قسمت جداسازی k .

خیلی خوشحال می شوم تا باگ احتمالی را هم حل کنم .
تصویر زیر رو نمیتونه پردازش کنه.

ali_abbasi22145
یک شنبه 16 اردیبهشت 1386, 15:22 عصر
سلام
1-من گوشه های عکسها را پیدا می کنم و عکس را تشخیص می دهم و بعد یکی یکی جدا می کنم.
2-دور هر تصویر یک چهارضلعی می کشم و در دو تا از تصویرهای شما در یک چهارضلی دورشان تلاقی دارند و این اشتباه شما است.
و اصول اسکن برای جداسازی را رعایت نکردید.
شما هر تعداد عکس که می خواهید در اسکنر بگذارید و از هم فاصله بدهید و کج ولوج نگذارید می بینید که به راحتی جداسازی می کند.
من چند کاربر دارم که حدود 15000 عکس را به این طریق جداسازی کرده اند!

MNosouhi
یک شنبه 16 اردیبهشت 1386, 18:18 عصر
2-دور هر تصویر یک چهارضلعی می کشم و در دو تا از تصویرهای شما در یک چهارضلی دورشان تلاقی دارند و این اشتباه شما است.

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

اصول اسکن برای جداسازی را رعایت نکردید.
البته اصولی که شما در برنامتون مشخص کردیده اید ، وگرنه اسکن که دیگه اصول نداره.

ali_abbasi22145
یک شنبه 16 اردیبهشت 1386, 21:12 عصر
سلام
دوست من چرا مسئله را سختش می کنید!!!
در اسکنر A4 شما حدود 20 عکس جا می شود و عکس اگر حدودا راست بگذارید به چهارضلی فرضی من هم توجه نکنید ! ( نه خیلی کج کنید) روش فوق همه عکسها را جداسازی می کندو اینرا که گفتم لطفا تست کنید.
اگر از قصد عکسها را کج کنید که لازم هم نیست آنوقت فاصله ها را زیادتر کنید هم دقیق کار می کند.
و در بالا هم گفتم که: من چند کاربر دارم که حدود 15000 عکس را به این طریق جداسازی کرده اند! و خیلی هم از آن راضی هستندو انه در اندازه یک کاربر DATA ENTRY کار بلدهستند پس مطمئنا برایشان کارایی دارد و روتین عالی کار می کند این گفته کاربران من است!

درضمن بدنیست گفته اساتید دیگر را هم گوش فرا دهیم که فرموده اند:
سلام ؛

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

<span dir=ltr>


An edge is not a physical entity, just like a shadow. It is where the picture ends and the wall starts. It is where the vertical and the horizontal surfaces of an object meet. It is what happens between a bright window and the darkness of the night. Simply speaking, it has no width. If there were sensor with infinitely small footprints and zero-width point spread functions, an edge would be recorded between pixels within in an image. In reality, what appears to be an edge from the distance may even contain other edges when looked close-up. The edge between a forest and a road in an aerial photo may not look like an edge any more in a image taken on the ground. In the ground image, edges may be found around each individual tree. If looked a few inches away from a tree, edges may be found within the texture on the bark of the tree. Edges are scale-dependent and an edge may contain other edges, but at a certain scale, an edge still has no width.

</span>

موفق باشی

amirsadeghi
چهارشنبه 19 اردیبهشت 1386, 13:40 عصر
حالا رو سورسش هم یکم بحث کنید

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 07:36 صبح
در جواب کلیه دوستانی که سورس می خواستند

* برای جداسازی چندین تصویر در داخل یک فرم که دارای Transparent می باشد بایستی کارهای زیر را انجام دهیم
1- ابتدا بایستی تابعی بنویسیم که Bitmap رنگی را دریافت کرده و با توجه Transparent آن را به یک تصویر سیاه و سفید تبدیل کند .
2- در این تصویر سیاه و سفید تولید شده رنگ Transparent به ناحیه سفید و بقیه نقاط در تصویر حاصله به نقاط سیاه تبدیل می شود . سپس هر کدام از این ناحیه سیاه بعنوان توکن در نظر گرفته و با الگوریتم 8 خانه مجاور کلیه ابعاد این توکن ها را تعیین می کنیم .(البته بهتر است که از روش آدرس دهی حافظه و صف استفاده شود و تصویر مورد نظر PixelFormat کمتر از 8 باشد )
3- با توجه به ابعاد بدست آمده توکن ها هر یک از ابعاد مورد نظر را در یک Bitmap کپی کرده و زاویه هر یک از این Bitmap را نسبت به افق بدست آورده و سپس عملیات Rotate را انجام می دهیم

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 07:41 صبح
این هم تابعی که گزینه شماره 1 یعنی عمل فیلتر کردن تصویر رنگی

PTriple = ^ TTriple;
TTriple = Array [0..65535] of TRGBTriple;
POne = ^ TOne ;
TOne = Array[0..65535] of Byte;

function CBFilterToBW(ABitmap: TBitmap): TBitmap;
var i , j : integer;
Row24 : PTriple;
Row8 : POne;
TransColor : TRGBTriple;
begin
Result := TBitmap.Create;
with Result do
begin
Width := ABitmap.Width;
Height := ABitmap.Height;
PixelFormat := pf8bit;
end;

Row24 := ABitmap.ScanLine[0];
TransColor := Row24[0];

for i := 0 to ABitmap.Height-1 do
begin
Row24 := ABitmap.ScanLine[i];
Row8 := Result.ScanLine[i];
for j := 0 to ABitmap.Width-1 do
if (Row24[j].rgbtBlue = TransColor.rgbtBlue) and
(Row24[j].rgbtGreen = TransColor.rgbtGreen) and
(Row24[j].rgbtRed = TransColor.rgbtRed) then
Row8[j] := 255
else Row8[j] := 0;
end;
end;

Valadi
پنج شنبه 10 خرداد 1386, 07:49 صبح
جناب Delphi_CAT
اگر امکان داره سورسهای مثال هایی که اشاره کردید را قرار بدید
موفق وموید باشی

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 07:51 صبح
1- این رویه DC مربوط به مرحله قبل را دریافت کرده و ابعاد کلیه توکن های موجود که همان تصاویر در فریم اصلی هستند را شناسایی می کند.
در اینجا تابع fill رو قرار ندادم همان طور که گفتیم براینکه اینکار با سرعت بالا صورت بگیره به روش آدرس دهی و صف و pixelFormat کمتر از 8 استفاده نماید .
procedure GetTokens(DC:HDC; BW,BH : Integer);
var i , j : integer;
row : PTriple;
CountRect : integer;
ROut : TRect;
begin
FillColor := RGBTriple(clRed);
TextColor := RGBTriple(clBlack);
Bitmap := TBitmap.Create;
Bitmap.Width := BW;
Bitmap.Height := BH;
BitBlt(Bitmap.Canvas.Handle,0,0,BW,BH,DC,0,0,SRCCO PY);
Bitmap.PixelFormat := pf8bit;
CountRect:=0;
SetLength(Rects,0);
for i := 0 to Bitmap.Height-1 do
begin
row := Bitmap.ScanLine[i];
for j := Bitmap.Width-1 downto 0 do
if CompareRGBTriple(row[j],TextColor) then
begin
ROut:= Fill2(j,i);
if ROut.Right-ROut.Left>0 then
begin
inc(CountRect);
SetLength(rects,CountRect);
rects[CountRect-1].x1:=ROut.Left;
rects[CountRect-1].y1:=ROut.Top;
rects[CountRect-1].x2:=ROut.Right;
rects[CountRect-1].y2:=ROut.Bottom;
Rects[CountRect-1].pnt:=Point(j,i);
end;
end;
end;
end;

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 07:56 صبح
باید توجه داشته باشید که اگر تصویر اصلی دارای Resualtion بیشتر از 300 (حد نرمال) باشد بوسیله روش های درونیابی آنرا به 300 کاهش داده و این تغییرات مقیاس را به کلیه فازها اعمال نماییم . هر چقدر resualtion را کاهش دهیم کا با سرعت بشتری انجام می گیرد .

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 08:32 صبح
این تابع هم با توجه به ابعاد بدست آمده تصاویر را از فریم اصلی جدا کرده زاویه آنها را نسبت به افق بدست آورده و سپس آنها را دوران می دهد این 2 عمل بدست آوردن زاویه و چرخش را هم می توانید دستی و هم با Image en انجام دهید و سپس یک تابع دیگر برای اینگه تصویر چرخش خورده به صورت کامل و فوکس شده در اختیار داشته باشیم

function ExtractPicture(ABitmap: TBitmap): TBitmapArray;
Const Dis = 10;
var len ,i : integer;
Grade : integer;
begin
len := Length(Rects);
setlength(Result,len);
for i := 0 to len-1 do
begin
Result[i]:= TBitmap.Create;
with Result[i] do
begin
Width := Rects[i].x2-Rects[i].x1 + Dis;
Height := Rects[i].y2-Rects[i].y1 + Dis;
PixelFormat := pf24bit;
BitBlt(Canvas.Handle,Dis,Dis,Width-dis,Height-dis,ABitmap.Canvas.Handle,Rects[i].x1,Rects[i].y1,SRCCOPY);
Grade := GetGrade(Result[i]);
Result[i].Assign(Rotate(Result[i],Grade));
Result[i].Assign(GetFocusPicture(Result[i]));
end;
end;
end;

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 08:47 صبح
این هم رکورد استفاده شده در این برنامه و بدست اوردن تصویر فوکوس از تصویر چرخش داده شده
TTokenRegion=record
x1,
y1,
x2,
y2 : integer;
LeftID,
RightID ,
LeftDis,
RightDis : integer;
TokenType : byte;
pnt :TPoint;
end;

var
Rects :Array of TTokenRegion;
FillColor ,TextColor : TRGBTriple;

function GetFocusPicture(ABitmap: TBitmap): TBitmap;
var i , j : integer;
Row : PTriple;
X1,Y1,X2,Y2 : integer;
TransColor : TRGBTriple;
begin
row := ABitmap.ScanLine[0];
TransColor := row[0];
X1 := -1;
Y1 := -1;
X2 := -1;
Y2 := -1;
for i := 0 to ABitmap.Height-1 do
begin
row := ABitmap.ScanLine[i];
for j := 0 to ABitmap.Width-1 do
if not( (Row[j].rgbtBlue = TransColor.rgbtBlue) and
(Row[j].rgbtGreen = TransColor.rgbtGreen) and
(Row[j].rgbtRed = TransColor.rgbtRed)) then
begin
Y1 := i;
Break;
end;
if Y1 <> -1 then Break;
end;
for i := ABitmap.Height-1 downto 0 do
begin
row := ABitmap.ScanLine[i];
for j := 0 to ABitmap.Width-1 do
if not( (Row[j].rgbtBlue = TransColor.rgbtBlue) and
(Row[j].rgbtGreen = TransColor.rgbtGreen) and
(Row[j].rgbtRed = TransColor.rgbtRed)) then
begin
Y2 := i;
Break;
end;
if Y2 <> -1 then Break;
end;
for j := 0 to ABitmap.Width-1 do
for i := 0 to ABitmap.Height-1 do
begin
row := ABitmap.ScanLine[i];
if not( (Row[j].rgbtBlue = TransColor.rgbtBlue) and
(Row[j].rgbtGreen = TransColor.rgbtGreen) and
(Row[j].rgbtRed = TransColor.rgbtRed)) then
begin
X1 := j;
Break;
end;
if X1 <> -1 then Break;
end;
for j := ABitmap.Width-1 downto 0 do
for i := 0 to ABitmap.Height-1 do
begin
row := ABitmap.ScanLine[i];
if not( (Row[j].rgbtBlue = TransColor.rgbtBlue) and
(Row[j].rgbtGreen = TransColor.rgbtGreen) and
(Row[j].rgbtRed = TransColor.rgbtRed)) then
begin
X2 := j;
Break;
end;
if X2 <> -1 then Break;
end;
Result := TBitmap.Create;
with Result do
begin
PixelFormat := pf24bit;
Width := X2 - x1;
Height := Y2 - Y1;
end;
BitBlt(Result.Canvas.Handle,0,0,Result.Width,Resul t.Height,ABitmap.Canvas.Handle,X1,Y1,SRCCOPY);
end;

ali_abbasi22145
پنج شنبه 10 خرداد 1386, 09:49 صبح
ممکنه در مورد الگوریتمی که استفاده کرده اید توضیح دهید ، بخصوص برای اون قسمت جداسازی k .

تصویر زیر رو نمیتونه پردازش کنه.

سلام
چرا من جدیدا تست کردم و حواسم نبود که اگر تیک ها را بردارید جداسازی می کند.

وصال1386
پنج شنبه 10 خرداد 1386, 09:51 صبح
آقا این برنامه بعد از برش عکسها رو کجا سیو میکنه !!

ali_abbasi22145
پنج شنبه 10 خرداد 1386, 10:10 صبح
حالا رو سورسش هم یکم بحث کنید

سلام
سورسش را خشکه حساب می کنم.

MNosouhi
پنج شنبه 10 خرداد 1386, 10:34 صبح
آقا یا خانم Delphi_CAT ، آیا مطمئنید کدهایی که گذاشته اید صحیح و کامل هستند ، من که نتونستم ران کنم.
در صورت امکان توابعتون رو تحت عنوان یک برنامه آپلود کنید.

مصطفی ساتکی
پنج شنبه 10 خرداد 1386, 10:39 صبح
همانطور که گفتم نوشتن تابع fill را به عهده خودتون گذاشتم بقیش هم در ست کار میکنه

MNosouhi
پنج شنبه 10 خرداد 1386, 13:28 عصر
مثلا TBitmapArray چیه ؟ کجا تعریف شده؟ یا تو کدوم یونیت میتونم پیداش کنم.
یا مثلا روی FillColor := RGBTriple(clRed); خطای Invalid TypeCast میده.

وصال1386
پنج شنبه 10 خرداد 1386, 23:17 عصر
بقیش هم در ست کار میکنه

با تشکر :تشویق:
من برنامه شمارو نصب کردم .عالی بود ولی ظاهرا عکس های برش خورده سیو نمی شن
البته شاید هم من اشتباه میکنم.

mahboob
شنبه 12 خرداد 1386, 08:19 صبح
این یک مثال از تفکیک تصاویر هست که از imageEN در اون استفاده شده

مصطفی ساتکی
شنبه 12 خرداد 1386, 09:21 صبح
و این هم چیزهایی که فراموشم شده بود جناب MNosouhi (http://barnamenevis.org/forum/member.php?u=11084)
TBitmapArray = Array of TBitmap;

Function RGBTriple(R,G,B : byte):TRGBTriple;Overload;
begin
Result.rgbtBlue := B;
Result.rgbtGreen := G;
Result.rgbtRed := R;
end;

Function RGBTriple(Color : TColor):TRGBTriple;Overload;
var R,G,B : byte;
begin
R := GetRValue(Color);
G := GetGValue(Color);
B := GetBValue(Color);
Result.rgbtBlue := B;
Result.rgbtGreen := G;
Result.rgbtRed := R;
end;

مصطفی ساتکی
شنبه 12 خرداد 1386, 09:23 صبح
جناب mahboob (http://barnamenevis.org/forum/member.php?u=13114) اون فقط یک exeی که اینکارو انجام میده در بالا کل اون مراحلو به همراه سورس که نوشتم توضیح دادم

MNosouhi
شنبه 12 خرداد 1386, 09:42 صبح
با سلام
باز هم کدهایی که گذاشتید کامل نیست ، مثلا در تابع GetTokens از متغیر Bitmap استفاده شده که هیچ جا تعریف نشده ، لطفا کدهایی که گذاشتید زو یه بار داخل دلفی کپی ، پست کنید و اشکالاتش رو بر طرف کنید و صحیحش رو بزارید.

مصطفی ساتکی
شنبه 12 خرداد 1386, 11:09 صبح
متغیری به نام Bitmap از نوع TBitmap رو به صورت Global تعریف کنید

MNosouhi
شنبه 12 خرداد 1386, 11:26 صبح
متغیری به نام Bitmap از نوع TBitmap رو به صورت Global تعریف کنید
هنوز 8 تا خطای دیگه داره ، اصلا بیخیالش .

این یک مثال از تفکیک تصاویر هست که از imageEN در اون استفاده شده
از چه ورژنی از ImageEn استفاده کردید؟

وصال1386
شنبه 12 خرداد 1386, 20:03 عصر
آقا این برنامه عکسهای برش زده شده رو کجا ذخیره میکنه . من به این برنامه نیاز دارم .
لطفا راهنمایی کنید

مصطفی ساتکی
یک شنبه 13 خرداد 1386, 07:54 صبح
توخروجی تابع ExtractPicture خودش آرایه دینامیک Tbitmap تصاویر بر می گرده

ali_abbasi22145
یک شنبه 13 خرداد 1386, 14:03 عصر
این یک مثال از تفکیک تصاویر هست که از imageEN در اون استفاده شده

سلام
این کار مشترک من و ImageEN است و ورژن که ImageEN دارد برای یکسری عکسها bug دارد.
و در برنامه من آن bug ها گرفته شده است و تست سنگین هم شده است!

وصال1386
دوشنبه 14 خرداد 1386, 01:07 صبح
آقا کسی نمیگه این عکسهایی برش خورده کجا ذخیره میشن
بابا ای وال..

MNosouhi
دوشنبه 14 خرداد 1386, 09:13 صبح
آقا کسی نمیگه این عکسهایی برش خورده کجا ذخیره میشن
برنامه رو که با سورس گزاشتن ، اون قسمت ذخیره عکس های برش خورده رو خودت اضافه کن.

Mahmood_M
سه شنبه 15 خرداد 1386, 12:18 عصر
سلام دوستان ...
ولی این سورس کار خاصی نمی کنه !!
منظورم اینه که تمام کار رو کامپوننت انجام میده ...
فکر نکنم بدون کامپوننت بشه با این چهار خط کد این کار رو انجام بده ...

کسی از دوستان دقیقا با نحوه این کار آشنا نیست ...
البته هنوز کدهای جناب " Delphi_Cat " را بررسی نکردم ... !

موفق باشید ...

وصال1386
یک شنبه 03 تیر 1386, 17:33 عصر
اساتید محترم من برنامه نویسی دلفی بلدنیستم اما نیاز مبرم به این برنامه ای که زحمتشو
کشیدید دارم که بتونه عکسهای اسکن شده رو برش بزنه و سیو کنه .
لطفا قسمت سیو رو هم اضافه بفرمایید .
باز هم متشکرم .:خجالت: :خجالت:

وصال1386
پنج شنبه 07 تیر 1386, 13:02 عصر
بازم به VFPکارهای خودمون اینجا حتی جواب سلام ما رو هم ندادن!
اساتید منتظر کمکتون هستم.

مصطفی ساتکی
شنبه 09 تیر 1386, 17:17 عصر
جهت اطلاع به من mial بفرستید . Delphi_CATco@yahoo.com

Hadizadeh
یک شنبه 07 مرداد 1386, 07:58 صبح
دوستان اولین نکته ای که باید اشاره کنم اینه که سعی کنید اگه می خواهید برنامتون سرعت بالا داشته باشه از Canvas استفاده نکنید. ثانیا آقای Delphi_CAT از توکن بحث می کنند که این غلطه! به این موارد توکن نمی گن! شما می تونستید بگید پیکسل های مرزی به دست آمده پس از دو مرحله 1- آستانه گیری و 2- لبه یابی ، وقتی می گید توکن یه پردازش تصویر کار یک فکر دیگه می کنه! (غیر از این مورد) و یه مخابراتی فکر شبکه و پروتکل های اون رو می کنه! شما در تمام این پست ها اشاره ای به نحوه آستانه یابی به عنوان یک عملیات پیش پردازش نکردید. اون Chain Codi رو هم که یکی از دوستان اشاره کرده بود در حقیقت جزو عملیات شناسایی مرز هست و زیاد به درد نمی خوره. یه راه خوب اینه که پس از لبه یابی تصویر از الگوریتم های تشخیص گوشه مثل Susan استفاده کنی و بعد همون مراحلی رو که دوستان اشاره کردن انجام بدی. اما راه ساده تر استفاده از تبدیل Hough هست. به هر حا از اینجا به بعد رو گوگل کنید! موفق باشید!

smakhavan
دوشنبه 22 مرداد 1386, 17:12 عصر
تابع SeparateObjects در مجموعه ImageEn وجود ندارد. شما از کدام ورژن آن استفاده کرده اید!!؟

Batman
دوشنبه 22 مرداد 1386, 21:24 عصر
با سلام
دوستان بهتر نیست به تاریخ پست ها یه نگاهی بندازید؟