Сравняване на матрици

dakata__92

Super Moderator
Колеги, имам две матрици, които са еднакви по големина примерно 5 реда на 8 колони са и двете. Искам да сравня стойностите на тези матрици дали са еднакви и ако са еднакви да създам матрица с адресите на различията в матрицата. Ако има лесен начин с някакви готови функциики ще съм много благодарен да го споделите. :)

PHP:
$a[0][1] = 4;
$a[0][2] = 5;
$a[0][3] = 6;

$b[0][1] = 7;
$b[0][2] = 8;
$b[0][3] = 9;

$t = array_diff_assoc($a[0],$b[0]);
print "<pre>".print_r($t,true)."</pre>";
Просто искам да автоматизирам процеса на сравнение.
 
Колеги, мисля, че успях.
PHP:
$i1 = new ImageInfo("img/1.jpg");
$image1 = $i1->getImageInfo();
$i2 = new ImageInfo("img/2.jpg");
$image2 = $i2->getImageInfo();
$result = array();
foreach ($image1['hexadecimalMatrix'] as $key => $val) {
	foreach ($val as $k => $v) {
		if ($v != $image2['hexadecimalMatrix'][$key][$k]) {
			$result[$key][$k] = $v;
		}
	}
}
print "<pre>".print_r($result,true)."</pre>";

Имам проблем. Защо когато примерно сваля някакво изображение с големина 100 КВ, копирам го (дотук няма проблем с копието), отварям го с пейнт не правя нищо сейфам го и е с променена големина на 103 КВ? Исках да създам изображение, което да се различава единствено по един пиксел, за да мога пробно да проверя дали кода ще ми изведе точно този пиксел. Оказва се, че няма как да стане, защото Пейнта променя големината на изображението постоянно и немога да променя само този пиксел... :? :idea: Как да си направя еднакви изображения с 1 пиксел разлика?
 
прочети си въпроса на глас:

Как да си направя еднакви изображения с 1 пиксел разлика?

и сам ще си отговориш :)

Иначе пробвай с фотошоп:
отваряш снимката и я zoom-ваш до дупка и боядисваш някое квадратче , сейфаш и си готов ;d
 
stoqnski каза:
прочети си въпроса на глас:

Как да си направя еднакви изображения с 1 пиксел разлика?

и сам ще си отговориш :)

Иначе пробвай с фотошоп:
отваряш снимката и я zoom-ваш до дупка и боядисваш някое квадратче , сейфаш и си готов ;d

Въпроса си е му е съвсем коректен.

Дака, я обясни по-подробно процеса и по-точно, защо ти е нужно отварянето му с Пейнт и след това сейфане. Просто не ми се вързаха нещата.
 
Revelation каза:
stoqnski каза:
прочети си въпроса на глас:

Как да си направя еднакви изображения с 1 пиксел разлика?

и сам ще си отговориш :)

Иначе пробвай с фотошоп:
отваряш снимката и я zoom-ваш до дупка и боядисваш някое квадратче , сейфаш и си готов ;d

Въпроса си е му е съвсем коректен.

Дака, я обясни по-подробно процеса и по-точно, защо ти е нужно отварянето му с Пейнт и след това сейфане. Просто не ми се вързаха нещата.
Правя матрица на изображението с цветовете му : $matrix[$y][$x] = 'FF00FF'; - примерно. Както и да е. Исках да си направя две еднакви изображения. Свалих си снимка от нета копирах я, дотук добре както споменах вече, големината на изображението е правилна всичко е супер. Реших да отворя копираното изображение в Пейнт и с моливчето да му оцветя един пиксел в някакъв различен цвят и да го сейфам. Да ама се променя големината в килобайти на изображението и ми дава винаги че са различни изображенията изцяло не само 1 пиксел. Затова реших да направя още 1 копие на изображение 1 и го кръстих 3. Отворих вече копираното изображение в пейнт и без да правя промени просто натиснах Ctrl + S за сейфане и промени веднага големината на изобраението. Тоест веднага ми го дава за различно, а ако сравня копираното копие без да съм го прпесейфал в Пейнт са еднакви. Проблема ми е защо пейнта рекомпресира големината на непроменено изображение? Трябва ми да сравнявам еднакви изображения и да маркирам различните пиксели, но големината им ми прави проблем...
 
Има много неща в изображенията които не виждаш.
Примерно компресията може да се променила, което пък е променило цвета на пикселите.

Отвори оригиналното изображение в Paint и го запази, направи си промяната и запази промененото изображение като втори файл - може и да стане.
 
eLite каза:
Има много неща в изображенията които не виждаш.
Примерно компресията може да се променила, което пък е променило цвета на пикселите.

Отвори оригиналното изображение в Paint и го запази, направи си промяната и запази промененото изображение като втори файл - може и да стане.
Пробвам но не се получава... Пиша система за проследяване на метеорити в космоса и нямам тестови снимки. Ако намеря и успея да наложа две снимки на които метеорита се движи, то ще успея да изчисля траекторията му и да го маркирам, като движещ се обект. Създадох изчислител, просто неуспявам да намеря изображения за да ги наложа и сравня разликите. :)
 
Според мен винаги ще е различна големината на снимките. Тествах малко с фотошопа и се оказва че има значение за големината кой точно пиксел променяш и какъв цвят му слагаш, колкото и да е странно :D . Първоначално като отворя една снимка копието е с променена големина защото самата програма си прави някаква компресия, но ако не пипам нищо всяка следваща е със същата големина. Сменя ли един пиксел и големината се променя според цвета и местоположението.
 
teroristd каза:
Според мен винаги ще е различна големината на снимките. Тествах малко с фотошопа и се оказва че има значение за големината кой точно пиксел променяш и какъв цвят му слагаш, колкото и да е странно :D . Първоначално като отворя една снимка копието е с променена големина защото самата програма си прави някаква компресия, но ако не пипам нищо всяка следваща е със същата големина. Сменя ли един пиксел и големината се променя според цвета и местоположението.
Матрично мога да го заменя, но идеята ми беше друга на мен. Явно така няма да стане. Ще търся друг начин да налагам снимките. Явно най простият начин няма да се получи. Сещам се за два три аналогични начина, но ще трябва да си намеря последователни снимки на определен квадрант от звездното небе. Ще трябва доста неща да променя по кода. Засега май, ще правя само класификация на звездите по снимка. :D
 
dakata__92 каза:
teroristd каза:
Според мен винаги ще е различна големината на снимките. Тествах малко с фотошопа и се оказва че има значение за големината кой точно пиксел променяш и какъв цвят му слагаш, колкото и да е странно :D . Първоначално като отворя една снимка копието е с променена големина защото самата програма си прави някаква компресия, но ако не пипам нищо всяка следваща е със същата големина. Сменя ли един пиксел и големината се променя според цвета и местоположението.
Матрично мога да го заменя, но идеята ми беше друга на мен. Явно така няма да стане. Ще търся друг начин да налагам снимките. Явно най простият начин няма да се получи. Сещам се за два три аналогични начина, но ще трябва да си намеря последователни снимки на определен квадрант от звездното небе. Ще трябва доста неща да променя по кода. Засега май, ще правя само класификация на звездите по снимка. :D

Да разбирам ли, че правиш предварително проверка дали двете изображения са с еднакъв размер ? Ако сравняваш и размера, просто го махни. Сравнявай само матрицата, защото всяка програма компресира по различен начин. Явно Пейнт винаги добавя нещо невидимо за теб, но видимо за Пейнт.
Така че, ако те бърка само размера, мисля, че ще е достатъчно да сравниш само матриците, независимо от размера на двете изображения.

Не съм много навътре с графичните изчисления и обработки, затова давам само идеи и разсъждения.
 
Не правя проверка. Просто, когато се опитам да направя изображение с един пиксел разлика, ми дава разлика в огромен брой пиксели, защото програмата прави компресия и променя пикселите по някакъв начин, като ми дава различни местоположетия на пиксели. Тоест компресията прави промяна в матрицата на изображението и дори да не, правя пиксел разлика, след копирането на изображението, отварянето и сейфането без промяна в пейнт вече то не е еднакво с оригинала. Ако просто копирам изображение 1 и създам изображение 2 то те според кода и матрицата са напълно еднакви. Проблема е че изображение 2 след сейфа се компресира и става неидентично с оригинала, въпреки, че промяна по него няма (рисуване и прочие). Това с килобайтите го засичам в папките, като маркирам изображенията с мишката и ми дава различна големина. :)
 
Да, разбирам.

Но като се върнах по-нагоре по постовете, ме навява мисълта, че ти това с Пейнт го правиш само за проба, да разбереш дали ти работи кода за сравнение на матриците ?
Ако е така, значи в момента говорим празни приказки, че Пейнт променя големината на файла и бърка пикселите.
Не знам дали грешна, но смятам, че не това беше идеята на темата ти. :D
 
Revelation каза:
Да, разбирам.

Но като се върнах по-нагоре по постовете, ме навява мисълта, че ти това с Пейнт го правиш само за проба, да разбереш дали ти работи кода за сравнение на матриците ?
Ако е така, значи в момента говорим празни приказки, че Пейнт променя големината на файла и бърка пикселите.
Не знам дали грешна, но смятам, че не това беше идеята на темата ти. :D
Като цяло да! Кодът ми работи, но неискам да отварям нова тема за да обсъждам проблема и продължих в тази. Вероятно ще трябва да мъдря код за сравняване на цветове. Дали са близки няанси или не. Например имам червен цвят, като шаблон и търся нюанси на червеното (светло или тъмно червено). :D
 
Относно въпроса за Paint-a, файловете са с различна големина, защото освен, че запазват графичния content на картинката има отделна мета информация, която се включва в самия файл. Щом са различни най-вероятно е timestamp-а на момента, в който е записан информацията. Или нещо свързано с тази допълнителна информация.
 
Fakeheal каза:
Относно въпроса за Paint-a, файловете са с различна големина, защото освен, че запазват графичния content на картинката има отделна мета информация, която се включва в самия файл. Щом са различни най-вероятно е timestamp-а на момента, в който е записан информацията. Или нещо свързано с тази допълнителна информация.
Позачудих се, порових се и аз стигнах до някакъв такъв извод за мета информацията, но така и неразбрах, коя точно брънка от веригата променя големината, за да се съобразявам с нея. :)
 
dakata__92 каза:
Fakeheal каза:
Относно въпроса за Paint-a, файловете са с различна големина, защото освен, че запазват графичния content на картинката има отделна мета информация, която се включва в самия файл. Щом са различни най-вероятно е timestamp-а на момента, в който е записан информацията. Или нещо свързано с тази допълнителна информация.
Позачудих се, порових се и аз стигнах до някакъв такъв извод за мета информацията, но така и неразбрах, коя точно брънка от веригата променя големината, за да се съобразявам с нея. :)
Дали си избрал точния език?
 
uphero каза:
dakata__92 каза:
Fakeheal каза:
Относно въпроса за Paint-a, файловете са с различна големина, защото освен, че запазват графичния content на картинката има отделна мета информация, която се включва в самия файл. Щом са различни най-вероятно е timestamp-а на момента, в който е записан информацията. Или нещо свързано с тази допълнителна информация.
Позачудих се, порових се и аз стигнах до някакъв такъв извод за мета информацията, но така и неразбрах, коя точно брънка от веригата променя големината, за да се съобразявам с нея. :)
Дали си избрал точния език?
В смисъл?
 

Back
Горе