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

C++ JAVA
User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3359
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

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

Post by dakata__92 » Mon Mar 14, 2016 6:01 pm

Колеги, имам две матрици, които са еднакви по големина примерно 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]
Просто искам да автоматизирам процеса на сравнение.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3359
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Post by dakata__92 » Mon Mar 14, 2016 7:30 pm

Колеги, мисля, че успях.
[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>";
[/php]

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

User avatar
stoqnski
Гуру
Гуру
Posts: 2037
Joined: Mon Sep 10, 2007 4:39 pm
Answers: 122
Location: гр.Сливен

Post by stoqnski » Mon Mar 14, 2016 10:48 pm

прочети си въпроса на глас:
Как да си направя еднакви изображения с 1 пиксел разлика?
и сам ще си отговориш :)

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

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 922
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Post by Revelation » Tue Mar 15, 2016 5:49 am

stoqnski wrote:прочети си въпроса на глас:
Как да си направя еднакви изображения с 1 пиксел разлика?
и сам ще си отговориш :)

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

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

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3359
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Post by dakata__92 » Tue Mar 15, 2016 8:30 am

Revelation wrote:
stoqnski wrote:прочети си въпроса на глас:
Как да си направя еднакви изображения с 1 пиксел разлика?
и сам ще си отговориш :)

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

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

User avatar
eLite
Потребител
Потребител
Posts: 967
Joined: Mon Apr 07, 2008 8:08 pm
Answers: 59
Location: София

Post by eLite » Tue Mar 15, 2016 9:43 am

Има много неща в изображенията които не виждаш.
Примерно компресията може да се променила, което пък е променило цвета на пикселите.

Отвори оригиналното изображение в Paint и го запази, направи си промяната и запази промененото изображение като втори файл - може и да стане.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3359
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Post by dakata__92 » Tue Mar 15, 2016 10:23 am

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

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

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Tue Mar 15, 2016 11:26 am

Според мен винаги ще е различна големината на снимките. Тествах малко с фотошопа и се оказва че има значение за големината кой точно пиксел променяш и какъв цвят му слагаш, колкото и да е странно :D . Първоначално като отворя една снимка копието е с променена големина защото самата програма си прави някаква компресия, но ако не пипам нищо всяка следваща е със същата големина. Сменя ли един пиксел и големината се променя според цвета и местоположението.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3359
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Post by dakata__92 » Tue Mar 15, 2016 11:34 am

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

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 922
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Post by Revelation » Tue Mar 15, 2016 7:47 pm

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

Не съм много навътре с графичните изчисления и обработки, затова давам само идеи и разсъждения.

Post Reply