User:Dvdkhl/Ideas: Difference between revisions

m
Dvdkhl moved page User:Dvdkhl to User:Dvdkhl/Ideas
m (Dvdkhl moved page User:Dvdkhl to User:Dvdkhl/Ideas)
 
(20 intermediate revisions by the same user not shown)
Line 4: Line 4:


= Ideas =
= Ideas =
== Clubs ==
AYEAR: academic year
CAYEAR: Current academic year
Clubs
*Status
**Disbanded
***Cannot be opened again without permission
**Disbanding
***Transitions to [Disbanded] after end of CAYEAR with no club activity in CAYEAR
***Transitions to [Gathering] after club activity
***Any member kind of member activity counts as club activity
***Looses all privileges
**Gathering
***Transitions to [Disbanding] after the end of the current academic year if there was no activity in the current academic year
***Transitions to [Club] after a member (who will become club president) request who has the approval of the <Student Council>
**Club
***Transitions to [Gathering] if <Student Council> NOTICES it has less than 5 members after CAYEAR
***Club leaders must remove members after a SEMESTER of inactivity otherwise the <Student Council> MAY give the club a STRIKE
***Has a "club room" which members may enter to update the inactivity date (of the club and member)
***Must participate in "AniDB Fair" and contribute to it
*Users
**May only join one club simultaneously
**May visit other clubs
*Mandatory Clubs
**Student Council
***AniDB Board members
****AniDB staff instructing the AniDB Club Leader
***AniDB Club Leader
****Responsible for looking after all clubs
**AniDB Development
***Recruiting users for development
***Place to post development jobs to for recruits to do
**AniDB Management
***Recruiting users for maintenance
***Place to post maintenance jobs to for recruits to do
Events
*AniDB Fair
**At the end of AYEAR
*AniDB Awards
**Annual
**Partner up with arc awards?
**Participants:
***Selectors: Any [Club] whose leader requested participation
***Voters: Any [Gathering] who requested participation
***Any club who requested participation must do so, otherwise the <Student Council> MAY give it a STRIKE
***Drafting happens two weeks before voting
***If enough participants are found the event commences
**Procedure
***arc awards style over one week


== Character Relations Graph (2. Approach) ==
== Character Relations Graph (2. Approach) ==
Line 47: Line 102:
* Anime(<u>Id</u>, ...)
* Anime(<u>Id</u>, ...)
* Entity(<u>Id</u>, EntityType, GuiseId, Name, ...)
* Entity(<u>Id</u>, EntityType, GuiseId, Name, ...)
** Used to describe an entity in a single state (Specific point in time or episode)
** &supe; Character(<u>Id</u>, Gender, DateOfBirth, DateOfDeath, Age, ...)
** &supe; Character(<u>Id</u>, Gender, DateOfBirth, DateOfDeath, Age, ...)
** &supe; Organisation(<u>Id</u>, ...)
** &supe; Organisation(<u>Id</u>, ...)
Line 52: Line 108:
** &supe; Mecha(<u>Id</u>, ...)
** &supe; Mecha(<u>Id</u>, ...)
* EntityGuise(<u>EgoId</u>, <u>GuiseOfId</u>)
* EntityGuise(<u>EgoId</u>, <u>GuiseOfId</u>)
** Connects characters which are the '''same''' character only in a different state (Aged, Transformed, etc.)
* Anime_EntityEntityRelation(<u>AId</u>, <u>RelationType</u>, RelationId)
* Anime_EntityEntityRelation(<u>AId</u>, <u>RelationType</u>, RelationId)
** Anime_EntityEntityRelation.RelationId as Primary Key for Relation Models
** Anime_EntityEntityRelation.RelationId as Primary Key for Relation Models
** Each model has its own tables
** Each model has its own tables
** The usage is defined by each model/view pair
** The usage is defined by each model/view pair


=== Presets ===
=== Presets ===
<div style="margin-left: 1em; background-color: #F8FFFF; border: 3px black double;">
<div style="margin-left: 1em; background-color: #F8FFFF; border: 3px black double;">
== Social ==
<h2>Social</h2>
Replacement for the "family of" relation. Currently there is no standardized way to specify blood relations.
Replacement for the "family of" relation. Currently there is no standardized way to specify blood relations.
This makes it impossible to form small groups of information like a group with only directly related characters (i.e. Father, Mother, Children).
This makes it impossible to form small groups of information like a group with only directly related characters (i.e. Father, Mother, Children).
Line 66: Line 122:


<div style="padding-left: 1em;">
<div style="padding-left: 1em;">
=== Model ===
<h3>Model</h3>
* Additional Tables
* Additional Tables
** FamilyRelations(RelationId, ChildId, ParentId, IsVirtualParent, IsAdopted)
** FamilyRelations(RelationId, ChildId, ParentId, IsVirtualParent, IsAdopted)
Line 72: Line 128:
** SocialUnionTypes(<u>Id</u>, Label, Style)
** SocialUnionTypes(<u>Id</u>, Label, Style)
** SocialUnionMembers(RelationId, MemberId, UnionId)
** SocialUnionMembers(RelationId, MemberId, UnionId)


; FamilyRelations
; FamilyRelations
Line 87: Line 144:
: Used to map characters to social unions
: Used to map characters to social unions
: If necessary add a Type field to describe directional relations (i.e. (King, Mistress) vs (Queen, Lover or whatever the equivalent for Male Mistress is))
: If necessary add a Type field to describe directional relations (i.e. (King, Mistress) vs (Queen, Lover or whatever the equivalent for Male Mistress is))
: Redundant? When character A has child B (FamilyRelations) and forms a relationship with character C (SocialUnionMembers). Force add FamilyRelations entry between B and C?
* Almost all (if not all) social relations can be derived from those tables
** Brothers = GetBrothers(Sibling) = {Brother &isin; Characters | isMale Brother && &forall; Parent &isin; Characters( Sibling isChildOf Parent && Brother isChildOf Parent ) }
** Aunts = GetAunts(NephewOrNiece) = { Aunt &isin; Characters | isFemale Aunt && &exist; Parent &isin; Characters ( NephewOrNiece isChildOf Parent && (Parent isSiblingOf Aunt || Parent isSiblingInLawOf Aunt) ) }
** etc.


; Example
; Example
: [http://pastebin.com/GThbEJAy Kyouran Kazoku Nikki (5580)]
: [http://pastebin.com/GThbEJAy Kyouran Kazoku Nikki (5580)]
: [http://pastebin.com/MxkJ2YtY Papa no Iukoto o Kikinasai! (8686)]
<h3>Views</h3>


=== Views ===
<h3>Assisted Conversion</h3>


=== Assisted Conversion ===
<h3>Add/Edit Form</h3>
 
</div></div>
=== Add/Edit Form ===
</div>


== Character Relations Graph (Abandoned) ==
== Character Relations Graph (Abandoned) ==
Line 205: Line 270:
* Image Hashing
* Image Hashing
** http://www.phash.org/docs/pubs/thesis_zauner.pdf
** http://www.phash.org/docs/pubs/thesis_zauner.pdf
** Resizing based (not optimal)
** Resizing based (not optimal?)
*** http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html
*** http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html
*** http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html
*** http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html
** Detect Text Bubbles
** Simple OCR
*** Recognising which character set is used (Latin, Asian)
**** Infer which language is used
=== Image Hash Algorithm ===
* Convert to grayscale (Black and white with thresholding?)
* Rotate image so the height is always greater or equal to the width
** This is done to reduce the ratio distortions
* Resize to a fixed Dimension
** Needs to ensure that the written text is still readable
** Proposed Dimension: 1024x2048 (common ratios: 1:3 and 2:3 => 1.5:3 => 1:2)
* Tile the image into 64x64 blocks
** With this we get 512 blocks for all images
* Apply 2D DCT for each block
* Take only a specific range of coefficients from the 2D DCT Block
* Produce hash from the selected ranges
==== Grayscale Conversion ====
<pre>byte ToGrayScale(r, g, b) {
  var min = Math.Min(r, Math.Min(g, b));
  var rgDiff = 1 + Math.Log(1 + Math.Abs(r - g), 256) * 2;
  var rbDiff = 1 + Math.Log(1 + Math.Abs(r - b), 256) * 2;
  var bgDiff = 1 + Math.Log(1 + Math.Abs(g - b), 256) * 2;
  var val = (byte)MathEx.Clamp(0, min * (rgDiff + rbDiff + bgDiff) / 3, 255);
  return val;
}</pre>
* Grayscale images are unaffected
* Pixel showing color are suppressed
** Works as long as there are (black) contour borders
** Might need border detection for contourless images
==== Color Edge Detection ====
* Generate pairwise channel difference images r-g, r-b, g-b
** No edges will be detected for grayscale images
* Apply smoothing to reduce edges introduced by noise
* Detect edges (steep gradiants) in each generated image
* Combine edge images
* Combine EdgeImage with grayscale image
* ResultImage = Max(GrayScaleImage, Edge(Smooth(r-g)), Edge(Smooth(r-b)), Edge(Smooth(g-b)))


== Remove/Change "hostile" judgemental anime/character tags? (Abandoned) ==
== Remove/Change "hostile" judgemental anime/character tags? (Abandoned) ==
* Meh, just me overreacting a bit
* Meh, just me overreacting a bit
** Approval rating seems to take care of it
** Approval rating seems to take care of it
227

edits

MediaWiki spam blocked by CleanTalk.
MediaWiki spam blocked by CleanTalk.